Протокол 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 через отражение, если ничего не помогает.

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