アプリケーションでホストされ、匿名認証を必要とする WCF サービスを除いて、Windows 認証を必要とする ASP.NET Web サイトがあります。
(たとえば: 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 認証済みサイトの例外として)。
http://MyHost/MyWebsite/
ルートの名前 ( MyService )と一致するフォルダーを作成し、/
それを空のままにし、IIS のディレクトリへの匿名認証を有効にすることによってのみ、これを達成できました。
IIS 構成のプレース ホルダーとして存在するためだけにフォルダーを作成する必要がない、IIS のサービス ルートへの匿名認証を許可するより良い方法はありますか?
追加メモ: IIS で空のフォルダーを構成して匿名アクセスを許可した後、物理フォルダーを削除しても、サービス ルートの匿名認証は引き続き有効であることがわかりました。