Использование 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 (не выполняет сетевых запросов, но основной принцип тот же)

Другие вопросы по тегам