我用xmlhttp组件截取其他网站的html代码没问题,但是截取http://news.xinhuanet.com/video/2005-06/07/content_3055840.htm的代码时,出现如下错误:拒绝访问。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 拒绝访问。 ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。源错误: 
行 43:  MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
行 44:  _xmlhttp.open("GET",Url,false,null,null);
行 45:  _xmlhttp.send("");
行 46:  if( _xmlhttp.readyState != 4 )
行 47:  return null;
 源文件: c:\inetpub\wwwroot\process\getpage.cs    行: 45 堆栈跟踪: 
[UnauthorizedAccessException: 拒绝访问。
]
   MSXML2.XMLHTTPClass.send(Object varBody) +0
   kekecool.GetPage.GetHTTPPage() in c:\inetpub\wwwroot\process\getpage.cs:45
   process.xinhuanet_news.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\process\xinhuanet_news.aspx.cs:27
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731 

解决方案 »

  1.   

    如果是在服务器端,何必用这劳什子。.net下有好几种获取远程http文件的方法。这个论坛上大多数用这个的例子是指在客户端使用。可是客户端能够轻易有此类权限,也可以直接用c++或者vb6去做个COM组件然后用通用的INET组件很简单地完成http和ftp通讯了。一般来说客户端不可能开放这个权限。
      

  2.   

    public string GetHTTPPage()
    {
    string str;


    mServer.ScriptTimeout=99999;
    MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
    _xmlhttp.open("GET",Url,false,null,null);
    _xmlhttp.send("");
    if( _xmlhttp.readyState != 4 )
      return null;
    str=BytesToBstr((byte[])_xmlhttp.responseBody,"GB2312"); 
    return str;

    }