我发现有几个来源说在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 - 我忽略了什么吗?
谢谢
Jon