IIS中的匿名身份验证到Windows身份验证的网站中的WCF服务路由

时间:2012-10-25 15:50:46

标签: c# wcf iis routes wcf-security

我有一个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中配置空文件夹以允许匿名访问后,我可以删除物理文件夹,并且仍然可以接受服务路由的匿名身份验证。

1 个答案:

答案 0 :(得分:0)

您的网站上并不需要任何空文件夹。您只需在IIS中向您的网站添加应用程序,并在此应用程序上设置匿名身份验证。其他方法是使用Windows身份验证。您的服务需要匿名身份验证的原因是什么?