WebRequest.Create问题

时间:2010-03-26 09:32:35

标签: c# httpwebrequest webrequest

我的要求是下载HTTM页面。喜欢和我正在使用WebRequest.Create。 但行

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://www.mayosoftware.com");

抛出异常{“配置系统无法初始化”}。 我在一个公司工作。是代理还是其他什么?但它是在创建自己的URL时发生的。

Exception trace is:

   at System.Configuration.ConfigurationManager.PrepareConfigSystem()
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
   at System.Net.Configuration.WebRequestModulesSectionInternal.GetSection()
   at System.Net.WebRequest.get_PrefixList()
   at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)

代码就像

void GetHTTPReq()
{ 

Looking forward on it. The complete code is as follows but problem is in the starting itself
:


\\            // used to build entire input

        StringBuilder sb = new StringBuilder();

        // used on each read operation
        byte[] buf = new byte[8192];

        // prepare the web page we will be asking for
        HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://www.mayosoftware.com");

        // execute the request
        HttpWebResponse response = (HttpWebResponse)
            request.GetResponse();

        // we will read data via the response stream
        Stream resStream = response.GetResponseStream();

        string tempString = null;
        int count = 0;

        do
        {
            // fill the buffer with data
            count = resStream.Read(buf, 0, buf.Length);

            // make sure we read some data
            if (count != 0)
            {
                // translate from bytes to ASCII text
                tempString = Encoding.ASCII.GetString(buf, 0, count);

                // continue building the string
                sb.Append(tempString);
            }
        }
        while (count > 0); // any more data to read?

        // print out page source
        Console.WriteLine(sb.ToString());
}

5 个答案:

答案 0 :(得分:2)

方法System.Net.Configuration.WebRequestModulesSectionInternal.GetSection正在寻找一个名为“webRequestModules”的部分,这里是我的machine.config(WINDOWS / Microsft.net / Framework / your_version / config / machine.config)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
...
  <sectionGroup name="system.net" type="System.Net.Configuration.NetSectionGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    ...
    <section name="webRequestModules" type="System.Net.Configuration.WebRequestModulesSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    ...
  </sectiongroup>
...
</configsection>
...
</configuration>

答案 1 :(得分:0)

从异常消息和堆栈跟踪中,它看起来像是在某种程度上访问配置。如果您没有System.Configuration,请尝试添加对{{1}}的引用。

答案 2 :(得分:0)

问题出在你的.NET配置中,配置放在很多位置,有第一个machine.config,然后有特定于用户的配置,然后有特定于应用程序的配置,现在如果你的公司的域控制器已经错误地设置了您的配置,或者您的任何machine.config或此类配置都有错误的信息,这可能会导致此问题。

如果您发现错误输入任何内容,请尝试查看您的app.config。

答案 3 :(得分:0)

我有同样的问题,这很奇怪,因为在一个解决方案中,相同的线条完美地工作,而在另一个解决方案中,我得到了上面的错误。这意味着问题出在本地项目设置文件中。 我通过将默认的Settings.settings和Settings.Designer.cs复制到非工作项目的Properties文件夹,在那里重写文件(在备份之后)并从项目中排除app.config文件来解决它。

希望这有帮助。

答案 4 :(得分:0)

我遇到了同样的问题,两个具有相同代码的项目,但是一个可行,而另一个却没有。我将App.config从无缺陷的项目复制并替换为有问题的项目,然后重新构建该项目。

希望这对您有帮助...