远程服务器返回错误: (401)未经受权的解决办法

一、错误号401.1

症状:HTTP 错误 401.1 - 未经受权:访问因为凭据无效被拒绝。

分析:

因为用户匿名访问使用的帐号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将形成用户没法访问。

解决方案:

(1)查看IIS管理器中站点安全设置的匿名账户是否被禁用,若是是,请尝试用如下办法启用:

控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名帐号启用。若是尚未解决,请继续下一步。

(2)查看本地安全策略中,IIS管理器中站点的默认匿名访问账号或者其所属的组是否有经过网络访问服务器的权限,若是没有尝试用如下步骤赋予权限:

开始->程序->管理工具->本地安全策略->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。

注意:通常自定义 IIS默认匿名访问账号都属于组,为了安全,没有特殊须要,请遵循此规则。

二、错误号401.2

症状:HTTP 错误 401.2 - 未经受权:访问因为服务器配置被拒绝。

缘由:关闭了匿名身份验证

解决方案:

运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后肯定。

三、错误号:401.3

症状:HTTP 错误 401.3 - 未经受权:访问因为 ACL 对所请求资源的设置被拒绝。

缘由:IIS匿名用户通常属于Guests组,而咱们通常把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,致使IIS匿名用户访问该文件的NTFS权限不足,从而致使页面没法访问。

解决方案:

给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,通常是读、写。

四、C#开发程序出现问题

在System.Net中提供了一个NetworkCredential,经过它咱们能够在网络中提供一个凭证,只有得到该凭证的用户才能访问相应的服务的权限。在这里咱们也使用NetworkCredential。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

                NetworkCredential d = new NetworkCredential("USERNAME", "PASSWORD");//添加此代码

                req.Credentials = d;
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

在webconfig配置web代理,使用httpweb请求的时候不须要设置proxy属性。

<system.net>
    <!--使用Web代理的设置-->
    <!--usesystemdefault指定是否使用 Internet Explorer 代理设置。 若是设置为 true,则后面的特性将重写 Internet Explorer 代理设置。 默认值为 unspecified。-->
    <defaultProxy>
      <proxy  usesystemdefault="True" proxyaddress="http://xxx.xx.1.191:80" bypassonlocal="True" />
      <bypasslist>
        <add address="xxx\.xx\.\d{1,3}\.\d{1,3}" />
      </bypasslist>
    </defaultProxy>
  </system.net>

http://blog.csdn.net/mang_liu/article/details/7708864web