我发现有几个来源说你不应该在 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 - 我忽略了什么?
谢谢
乔恩