我在另一台服务器上托管了一个Web服务,并且已经检查了IIS中的匿名访问复选框。当我的本地Web应用程序尝试访问Web服务时,我仍然收到“请求失败,HTTP状态为401:访问被拒绝”。错误。我的Web应用程序正在调用Web 服务如下:
MyObject.WebService ws = new MyObject.WebService(); ws.Retrieve(someParams);
我在这里缺少什么?
答案 0 :(得分:11)
Here是诊断401错误的一个很好的参考。
从那开始,一个地方就是查看为匿名用户配置的凭据。如果它们不正确(如果用户密码可能在别处更改),您将获得HTTP 401。
答案 1 :(得分:2)
确保您的目录权限也设置为允许每个人都具有读取权限。很多时候做本地开发工作我会忘记被访问的目录有一组需要更改的独立权限。
干杯!
答案 2 :(得分:1)
检查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;
这段代码对我有用。
答案 3 :(得分:0)
你有没有选择允许iis来控制密码,有些时候会离开接收器。
尝试网站,它可能会工作。你可以在那之后重新启用控制
答案 4 :(得分:0)
尝试以下方法(注意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/。
答案 5 :(得分:0)
我认为可能发生的事情是你获得了401 - 许可被拒绝,但是对于谁被拒绝许可是不清楚的。我猜这时你已经检查了机器上的NTFS权限,并确认你确实有权访问。
接下来,我将查看应用程序池使用的帐户。如果是默认设置,则可能是NT网络服务帐户。如果是这种情况,请确认该帐户确实可以访问应用程序目录。如果是这种情况,它可能是COM +安全设置。默认情况下,您的网络服务帐户无权远程启动组件。如果是这种情况,您将看到系统和安全日志中的错误,这些错误会说明链接“无法启动组件”
查看IIS日志文件以及iis服务器上的系统和安全事件日志通常会产生更多线索。
希望它有所帮助 最好的祝福 Rihan Meij