繁体   English   中英

WebRequest System.NotSupportedException

[英]WebRequest System.NotSupportedException

在monodevelop中写成这样:

using System;
using System.Net;
using System.Net.Http;

namespace Hello
{
    public class Hello
    {
        public Hello () {}

        public static WebResponse world(string symbol) {
            WebRequest request = WebRequest.Create("http://yahoo.com");
            WebResponse response = request.GetResponse ();
        }
    }
}

在运行时获取此异常:

未处理的异常:System.NotSupportedException:System.Net.WebRequest.GetCreator上的http://yahoo.com/(System.String前缀)[0x00000],System.Net.WebRequest.Create上的:0(System.Uri requestUri)[在CNBC.Research.LookupUtil.downloadStockHistory(System.String符号)在0处,在CNBC.MainClass的:0处,在System.Net.WebRequest.Create(0.在00000. 0x00000]在System.Net.WebRequest.Create(System.String requestUriString)[0x00000]在[0x00000]主(System.String []参数)[0x00000]在:0 [ERROR]致命未处理的异常:System.NotSupportedException: http://yahoo.com/在System.Net.WebRequest.GetCreator(System.String前缀)[0x00000 ]在System.Net.WebRequest.Create(System.Uri requestUri)的:0中[0x00000]在System.Net.WebRequest.Create(System.String requestUriString)的:0中的CN0.CN(0x00000)在CNBC.Research.Hello .world(System.String符号)[0x00000]在CNBC.MainClass.Main的:0中[System.String [] args)[0x00000]在:0的状态

我相信是因为它不知道什么是http ,但是我不知道如何添加它。

编辑:

这可以揭示问题所在。 可能是因为我运行了错误的版本? 我也收到此错误:

警告:此应用程序支持的运行时版本不可用。 使用默认运行时:v4.0.30319

我应该运行.NET 3.5的3.5版吗?

请尝试以下代码片段。

   public static WebResponse world(string symbol) {
        // Create a new 'Uri' object with the specified string.
        Uri myUri =new Uri("http://yahoo.com");
        // Create a new request to the above mentioned URL. 
        WebRequest request= WebRequest.Create(myUri);
        // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
        WebResponse response = request.GetResponse ();

      }

要么

 public static WebResponse world(string symbol) {
        // Create a new 'Uri' object with the specified string.
        Uri myUri =new Uri("http://yahoo.com");
        // Create a new request to the above mentioned URL. 
        WebRequest request= CreateWebRequest(myUri);
        // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
        WebResponse response = request.GetResponse ();

      }


private static HttpWebRequest CreateWebRequest(Uri uri)
{
 var type = Type.GetType("System.Net.HttpRequestCreator, System, Version=4.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089");
    var creator = Activator.CreateInstance(type,nonPublic:true) as IWebRequestCreate;
    return creator.Create(uri) as HttpWebRequest;
}

一旦我尝试将应用程序与Mono Runtime捆绑在一起以在没有开箱即用安装的机器上使用时,我就遇到了这种情况。

解决方案是使用以下内容将App.config文件添加到我的项目中(已安装单声道版本的machine.config文件中的复制部分)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="system.net" type="System.Net.Configuration.NetSectionG

    roup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="authenticationModules" type="System.Net.Configuration.AuthenticationModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <section name="connectionManagement" type="System.Net.Configuration.ConnectionManagementSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <section name="defaultProxy" type="System.Net.Configuration.DefaultProxySection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <sectionGroup name="mailSettings" type="System.Net.Configuration.MailSettingsSectionGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <section name="smtp" type="System.Net.Configuration.SmtpSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            </sectionGroup>
            <section name="requestCaching" type="System.Net.Configuration.RequestCachingSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <section name="settings" type="System.Net.Configuration.SettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <section name="webRequestModules" type="System.Net.Configuration.WebRequestModulesSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </sectionGroup>
      </configSections>

      <system.net>
        <authenticationModules>
            <add type="System.Net.BasicClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add type="System.Net.DigestClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add type="System.Net.NtlmClient, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </authenticationModules>
        <webRequestModules>
            <add prefix="http" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add prefix="https" type="System.Net.HttpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add prefix="file" type="System.Net.FileWebRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add prefix="ftp" type="System.Net.FtpRequestCreator, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </webRequestModules>
        <settings>
          <ipv6 enabled="false"/>
          <servicePointManager checkCertificateName="false" checkCertificateRevocationList="false" />
        </settings>
      </system.net>


    </configuration>

希望这会给你一个线索!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM