WCF サービスから HTTP 401 を返すにはどうすればよいですか?
4 に答える
REST サービスをプログラミングしている場合は、次の方法で実行できます。
private IWebOperationContext context = new WebOperationContextWrapper(WebOperationContext.Current); // Get the context
context.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized; // Set the 401
throw new WebFaultException(System.Net.HttpStatusCode.Unauthorized);
ノート:
MSDN: WCF REST エンドポイント (WebHttpBinding および WebHttpBehavior または WebScriptEnablingBehavior) を使用すると、応答の HTTP ステータス コードがそれに応じて設定されます。ただし、WebFaultException は非 REST エンドポイントで使用でき、通常の FaultException のように動作します。
WCF REST スターター キットの WebServiceHost2 ファクトリを使用している場合は、特定のものをスローWebProtocolException
して、HTTP リターン コードを指定することもできます。
(ソース: robbagby.com )
(ソース: robbagby.com )
(ソース: robbagby.com )
HttpStatusCode.Unauthorized
401 ステータス コードに対応するもあります。
HTTP リターン コードを指定するさまざまな方法の詳細については、Rob Bagby の優れたブログ記事「Effective Error Handling with WCF REST 」を参照してください。(スクリーンショットは、Rob のブログ投稿からのものです。これについては、Rob のすべての功績に値します。)
いつ認可チェックを行う必要があるかに応じてHttpModule
、次のようなものを使用して行うことができます。
HttpContext context = HttpContext.Current;
context.Response.StatusCode = 401;
context.Response.End();