繁体   English   中英

即使虚拟目录允许匿名访问,Web 服务也会出现“HTTP 状态 401:访问被拒绝”错误

[英]"HTTP status 401: Access Denied" error for web service even when the virtual directory allows Anonymous access

我在另一台服务器上托管了一个 Web 服务,IIS 中的匿名访问复选框已被选中。 当我的本地 Web 应用程序尝试访问 Web 服务时,我仍然收到“请求失败,HTTP 状态 401:访问被拒绝”。 错误。 我的 Web 应用程序正在调用 Web 服务,如下所示:

MyObject.WebService ws = new MyObject.WebService (); ws.Retrieve(someParams);

我在这里想念什么?

是诊断 401 错误的一个很好的参考。

从那开始,一个地方是查看您为匿名用户配置的凭据。 如果它们不正确(如果用户密码可能在其他地方更改),您将收到 HTTP 401。

确保您的目录权限也设置为允许所有人读取访问权限。 很多时候做本地开发工作我会忘记正在访问的目录有一组单独的权限需要更改。

干杯!

检查这个http://www.c-sharpcorner.com/UploadFile/mahesh/40107282006095201AM/401.aspx

//Assigning DefaultCredentials to the Credentials property //of the Web service client proxy (myProxy). myProxy.Credentials= System.Net.CredentialCache.DefaultCredentials;

这段代码对我有用。

你有没有尝试取消选择允许 iis 控制密码,有时会离开接收器。

尝试该站点,它可能会起作用。 在那之后你就可以重新启用控制了

尝试以下操作(注意 PreAuthenticate thingy):

MyObject.WebService ws = new MyObject.WebService(); 
ws.PreAuthenticate = true;
response = ws.Retrieve(someParams);

有关为什么这可能有效的更详细说明,您可以在此处参考以下答案http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/3ae9753d-2d97-45b9-9ba2-6d551fe60a48/

我认为可能发生的情况是您收到了 401 - 权限被拒绝,但权限被拒绝的对象尚不清楚。 我猜此时您已经检查了机器上的 NTFS 权限,并确认您确实具有访问权限。

接下来,我将查看应用程序池使用的帐户。 如果它是默认设置,它可能是 NT 网络服务帐户。 如果是这种情况,请确认该帐户确实有权访问应用程序目录。 如果也是这种情况,它可能是 COM+ 安全设置。 默认情况下,您的网络服务帐户无权远程启动组件。 如果是这种情况,您将在系统和安全日志中看到错误链接,“无法启动组件”

查看 IIS 日志文件以及 iis 服务器上的系统和安全事件日志通常会产生更多线索。

希望它有助于最好的问候 Rihan Meij

暂无
暂无

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

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