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

1、错误号401.1

症状:HTTP 错误 401.1 – 未经授权:访问由于凭据无效被拒绝。

分析:

由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。

解决方案:

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

控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。

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

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

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

2、错误号401.2

症状:HTTP 错误 401.2 – 未经授权:访问由于服务器配置被拒绝。

原因:关闭了匿名身份验证

解决方案:

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

3、错误号:401.3

症状:HTTP 错误 401.3 – 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。

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

解决方案:

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

4、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://172.27.1.191:80"
        bypassonlocal="True" />
      <bypasslist>
        <add address="172\.27\.\d{1,3}\.\d{1,3}" />
      </bypasslist>
    </defaultProxy>
  </system.net>

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