Использование CefSharp с Owin TestServer
Из-за потенциальных ограничений брандмауэра и необходимости иметь много экземпляров моего приложения, которые не могут конкурировать за порты, я хотел бы использовать класс Microsoft.Owin.Testing.TestServer для создания веб-сервера в памяти, который будет обслуживать запросы к встроенный браузер CefSharp (подойдет либо WPF, либо Winforms).
Я могу создать TestServer без проблем. Как настроить элемент управления CefSharp WebBrowser для использования этого тестового сервера вместо стандартного сетевого стека ОС?
Если бы я формировал свои собственные запросы, я бы либо использовал HttpClient, предоставленный TestServer, либо создал новый HttpClient, используя обработчик TestServer. Есть ли эквивалентная функциональность в CefSharp WebBrowser?
1 ответ
Вы можете перехватывать запросы и выполнять их самостоятельно. Если вы реализуете IResourceHandlerFactory
потом IResourceHandler
(Просто верните новый экземпляр вашего обычая IResourceHandler
в IResourceHandlerFactory.GetResourceHandler
)
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 (не выполняет сетевых запросов, но основной принцип тот же)