Протокол HTTP не поддерживается в WebRequest под моно
У меня самая странная проблема на одном из моих Macbook. У меня есть приложение C#, которое работает под моно на моем Macbook. Приложение связывается с веб-сервисом через HTTP, и оно отлично работает на моем старом Macbook.
Я купил новый MacBook и тестировал свое приложение, но по какой-то странной причине:
HttpWebRequest myReq =
(HttpWebRequest)WebRequest.Create(sURI);
Броски NotSupportedException
с предоставленным URI в качестве сообщения об исключении.
Я также попробовал следующее:
HttpWebRequest myReq =
(HttpWebRequest)WebRequest.Create("http://www.google.com");
и получил то же исключение. Я не уверен, почему все сходит с ума, и не могу думать ни о чем, что могло бы вызвать это, так как это, кажется, прекрасно работает на других Mac.
Редактировать:
Версия Mono, которую я использую, 2.10.11
Трассировка стека для исключения:
Webrequest.Create Exception string : System.NotSupportedException: http://www.google.com/
at System.Net.WebRequest.GetCreator (System.String prefix) [0x00000] in <filename unknown>:0
at System.Net.WebRequest.Create (System.Uri requestUri) [0x00000] in <filename unknown>:0
at System.Net.WebRequest.Create (System.String requestUriString) [0x00000] in <filename unknown>:0
at MyApp.XSPManager.GeneralSOAPFunction (System.String serverName, System.String settingsAsXml, SharedLib.zErrorCodes& errorCode, System.String& message, System.String& actionType) [0x00000] in <filename unknown>:0
С уважением
2 ответа
WebRequest.GetCreateor получает список поддерживаемых протоколов из app.config/machine.config, в частности, из раздела конфигурации system.net/webRequestModules
,
Если протокол (в вашем случае "http") там не найден, он генерирует исключение NotSupportedException.
Итак, проверьте ваш machine.config, в нем, вероятно, отсутствуют правильные модули webRequestModules. Он должен иметь "http" -> HttpRequestCreator.
Или попробуйте вызвать приватный конструктор HttpWebRequest через отражение, если все остальное не удалось.
WebRequest.GetCreateor получает список поддерживаемых протоколов из app.config/machine.config, в частности, из раздела конфигурации system.net/webRequestModules.
Если протокол (в вашем случае «http») там не найден, он выдает исключение NotSupportedException.
Итак, проверьте свой machine.config, возможно, в нем отсутствуют правильные модули webRequestModules. Он должен иметь «http» -> HttpRequestCreator.
Или попробуйте вызвать закрытый конструктор HttpWebRequest через отражение, если ничего не помогает.