2011-03-07 56 views
5

我有一个Web应用程序,我想提供对其中几个Web服务的匿名访问,以便我们可以在没有Windows登录的计算机上访问Web服务。在单个位置禁用Windows身份验证

我试过这里的东西Disable authentication on subfolder(s) of an ASP.NET app using windows authentication。我已经做到了这一点:

<authentication mode="Windows" /> 
<authorization> 
    <deny users="?" /> 
</authorization> 

...

<location path="Tests/QService.asmx"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

这些都“工作”,因为它们允许访问匿名用户的Web服务。但是,似乎IIS仍然发送授权challange,因为当我从浏览器访问服务时,我得到一个框以输入我的用户名和密码。如果我点击取消,我可以匿名访问该页面。然而,我们的一些客户不能很好地处理这个问题,并且因为401返回代码而失败。

有没有办法完全禁用该单一位置上的Windows身份验证,以便IIS不会尝试建立Windows身份验证?

+0

我猜这是在你的虚拟目录在IIS中的设置。您使用的是哪个版本的IIS?虚拟目录上启用的身份验证设置是什么? – 2011-03-07 17:02:02

+0

IIS 7.5。我启用了匿名身份验证和Windows身份验证。 – tster 2011-03-07 17:13:41

+0

@tster @richm - 答案仅用于回答问题。他们不在那里供其他用户使用,以便为他们自己的目的获取更多信息,或通过提出另一个问题来解决类似问题。堆栈溢出是*不是*论坛。通过编辑回答“回答问题”也是不允许的。就这样你知道。谢谢。 – Kev 2011-05-31 23:45:55

回答

4

您需要在该单个位置的虚拟目录上禁用Windows身份验证。那么你不应该受到挑战。

+0

This工作,但我不想修改我发布的每个IIS实例的配置,我宁愿有一个web.config或代码解决方案。 – tster 2011-03-07 19:22:14