我有一个ASP.NET网站需要Windows身份验证,但应用程序中托管的WCF服务除外,需要进行匿名身份验证:
(比方说:FooService.svc
)
[ServiceContract]
[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed )]
[ServiceBehavior( InstanceContextMode = InstanceContextMode.PerCall, IncludeExceptionDetailInFaults = true)]
public partial class FooService
{
[WebGet( UriTemplate = "foo", ResponseFormat = WebMessageFormat.Json )]
public string GetFoo()
{
return "Foo";
}
}
我在Global.asax
注册了我的路线:
routes.Add( new ServiceRoute( "MyService", new WebServiceHostFactory(), typeof( FooService ) ) );
我的问题是使这项服务及其所有路由都允许匿名身份验证(作为Windows Authenitcated站点其余部分的例外)。
我只能通过创建一个与路由名称匹配的文件夹(http://MyHost/MyWebsite/
MyService /
)来实现此目的,并将其保留为空,并启用匿名身份验证到IIS中的目录。
是否有更好的方法允许对IIS中的服务路由进行匿名身份验证,而不涉及创建仅作为IIS配置的占位符存在的文件夹?
其他注意:我发现在IIS中配置空文件夹以允许匿名访问后,我可以删除物理文件夹,并且仍然可以接受服务路由的匿名身份验证。
答案 0 :(得分:0)
您的网站上并不需要任何空文件夹。您只需在IIS中向您的网站添加应用程序,并在此应用程序上设置匿名身份验证。其他方法是使用Windows身份验证。您的服务需要匿名身份验证的原因是什么?