WebApiのホスティングがIISの場合、HttpContextにアクセスでき、itemsコレクションを使用して単一のHTTP要求のオブジェクトを格納できます。
セルフホスティングの場合、HttpContextがなくなるので、単一のリクエストのオブジェクトを保存するために何を使用できますか?
WebApiのホスティングがIISの場合、HttpContextにアクセスでき、itemsコレクションを使用して単一のHTTP要求のオブジェクトを格納できます。
セルフホスティングの場合、HttpContextがなくなるので、単一のリクエストのオブジェクトを保存するために何を使用できますか?
明らかに、セルフホストにはSystem.WebのHttpContextに直接相当するものはありません。
ただし、単一のリクエストの情報を開始する場合は、各HttpRequestMessageで<string、object>のディクショナリ(http://msdn.microsoft.com/en-us/library/system.net.http)が公開されProperties
ます。 httprequestmessage.properties.aspxは、ハンドラー、フィルター、バインダーなどの間でデータを転送するために使用できます。
セルフホスト(IISは関与していません)の場合、タイプから派生した属性クラスを構築できますSystem.Web.Http.Filters.ActionFilterAttribute
(アセンブリsystem.web.http .net 4.0+内)。次に、OnActionExecutedメソッドを次のようにオーバーライドします。
public class NoResponseCachingAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext.Response.Headers.CacheControl == null)
actionExecutedContext.Response.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue();
actionExecutedContext.Response.Headers.CacheControl.NoCache = true;
actionExecutedContext.Response.Headers.CacheControl.NoStore = true;
actionExecutedContext.Response.Headers.CacheControl.MustRevalidate = true;
base.OnActionExecuted(actionExecutedContext);
}
}
このアプローチは私のアプリケーションで機能しました。