由于潜在的防火墙限制,以及我的应用程序需要有许多无法竞争端口的实例,我想使用Microsoft.Owin.Testing.TestServer类来创建一个内存中的web服务器,该服务器将为嵌入式CefSharp浏览器提供请求( WPF或Winforms都可以)。
我可以在没有问题的情况下创建TestServer。如何将CefSharp WebBrowser控件配置为使用该测试服务器而不是使用标准OS网络堆栈?
如果我正在形成自己的请求,我要么使用HttpClient提供的TestServer,要么使用TestServer的处理程序创建一个新的HttpClient。在CefSharp WebBrowser中有任何类似的功能吗?
发布于 2016-01-06 01:32:21
你可以拦截请求并自己完成它们。如果您实现了IResourceHandlerFactory,那么随后是IResourceHandler (只需在IResourceHandlerFactory.GetResourceHandler中返回自定义IResourceHandler的一个新实例)
https://github.com/cefsharp/CefSharp/blob/cefsharp/45/CefSharp/IResourceHandlerFactory.cs#L22
将为每个请求实例化自定义ResourceHandler的新实例。以async的方式处理请求相对简单,只需在ProcessRequestAsync中调用您的请求,当它用数据填充本地流时,执行callback.Continue(),返回流并在GetResponse中填充响应。我喜欢将callback包装在using语句中,因为它包装了托管资源,应该显式地释放它。
您可以在https://github.com/cefsharp/CefSharp/blob/cefsharp/45/CefSharp.Example/CefSharpSchemeHandler.cs#L92上看到一个基本示例(不发出网络请求,但主体是相同的)
https://stackoverflow.com/questions/34624015
复制相似问题