我下载了CEF(chromuim嵌入式框架)二进制分布自带的(cefclient & cefsimple)C++示例,并且实现了cefclient可以在运行时更改代理设置。CefSharp 3套代理在运行时
而关键是要抓住RequestContext并调用SetPreference函数。
在CefClient上都很好用。
但在CefSharp上调用SetPreference总是返回false,并且HasPreference对于首选项名称“proxy”返回false。
我下载了CEF(chromuim嵌入式框架)二进制分布自带的(cefclient & cefsimple)C++示例,并且实现了cefclient可以在运行时更改代理设置。CefSharp 3套代理在运行时
而关键是要抓住RequestContext并调用SetPreference函数。
在CefClient上都很好用。
但在CefSharp上调用SetPreference总是返回false,并且HasPreference对于首选项名称“proxy”返回false。
感谢amaitland适当的方式,积极有效保单变更请求上下文prefrences,是运行在CEF UIThread的代码如下:
Cef.UIThreadTaskFactory.StartNew(delegate {
var rc = this.browser.GetBrowser().GetHost().RequestContext;
var v = new Dictionary<string, object>();
v["mode"] = "fixed_servers";
v["server"] = "scheme://host:port";
string error;
bool success = rc.SetPreference("proxy", v, out error);
//success=true,error=""
});
我正在“试图修改不是用户可修改的引用” – jLynx
@amaitland您能否描述上述内容和方式?我想在Cef.Initialized后的运行时更改代理,请让我知道。谢谢 – confusedMind
我试过上面的但没有任何反应,它仍在使用我的默认ip,有什么建议吗? – confusedMind
如果有人需要任何其他soulition我发现这个解决方案。
Cef.UIThreadTaskFactory.StartNew(delegate
{
string ip = "ip or adress";
string port = "port";
var rc = this.browser.GetBrowser().GetHost().RequestContext;
var dict = new Dictionary<string, object>();
dict.Add("mode", "fixed_servers");
dict.Add("server", "" + ip + ":" + port + "");
string error;
bool success = rc.SetPreference("proxy", dict, out error);
});
跳上'Gitter',阅读昨天的对话,了解你所需要的所有细节。可能你在不正确的线程上调用,只有一个线程可以工作。 https://gitter.im/cefsharp/CefSharp – amaitland
非常感谢,有人想知道如何在适当的线程上运行代码,但是我被C++和c#包装器之间的代码歧义分心了。 – Aladdin