WebApi で HttpContext.Current を使用してはならないという情報源をいくつか見つけましたが、HttpContext.Current を使用していたケースをどのように処理するべきかについて述べている情報源はありません。
たとえば、オブジェクトのリンクを作成する LinkProvider クラスがあります。(トピックにとどまるために単純化されています)。
public abstract class LinkProvider<T> : ILinkProvider<T>
{
protected ILink CreateLink(string linkRelation, string routeName, RouteValueDictionary routeValues)
{
var context = System.Web.HttpContext.Current.Request.RequestContext;
var urlHelper = new System.Web.Mvc.UrlHelper(context);
var url = string.Format("{0}{1}", context.HttpContext.Request.Url.GetLeftPart(UriPartial.Authority), urlHelper.RouteUrl(routeName, routeValues));
///...
return new Link(linkRelation, url);
}
}
このクラスは MediaTypeFormatter によって使用されます。
このクラスは、元の要求から来たのと同じホストを使用してリンクを構築し、元の要求にあったルート値を活用することが期待されています。
しかし...どうすればHttpRequestMessageを手に入れることができますか? これは MediaTypeFormatter によってカプセル化されますが、それもありません。
HttpRequestMessage を取得する簡単な方法が必要です-何を見落としていますか?
ありがとう
ジョン