我有一个 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 Authenticated 站点的其余部分的例外)。
我只能通过创建一个与路由名称(http://MyHost/MyWebsite/
MyService/
)匹配的文件夹来实现这一点,将其留空,并对 IIS 中的目录启用匿名身份验证。
是否有更好的方法允许对 IIS 中的服务路由进行匿名身份验证,而不涉及创建仅作为 IIS 配置的占位符存在的文件夹?
附加说明:我发现在IIS中配置空文件夹允许匿名访问后,我可以删除物理文件夹,并且仍然尊重服务路由的匿名身份验证。