【发布时间】:2013-11-22 10:47:11
【问题描述】:
我有正在发布的 JSON 数据,它通过完整的 URL 引用其他资源,如下所示:
{
jobItems : [
"http://example.com/item/3",
"http://example.com/item/5"
]
}
在我的 WebAPI 控制器中,我通过重用相应的路由来解析这些 URL:
private static IHttpRouteData ParseLink(
this ApiController controller,
string routeName,
Uri uri)
{
var fakeRequest = new HttpRequestMessage(HttpMethod.Get, uri);
string virtualPathRoot = controller.Configuration.VirtualPathRoot;
var route = controller.Configuration.Routes[routeName];
return route.GetRouteData(virtualPathRoot, fakeRequest);
}
以上内容在独立的自托管 WebAPI 部署中运行良好。但是,当我在 Web 主机 (IIS) 上的 ASP.NET MVC4 应用程序中部署 WebAPI 控制器时,GetRouteData 会引发以下异常:
System.NotImplementedException
at System.Web.HttpContextBase.get_Items()
at System.Web.Http.WebHost.Routing.HttpContextBaseExtensions.GetHttpRequestMessage(HttpContextBase context)
at System.Web.Http.WebHost.Routing.HttpWebRoute.ProcessConstraint(HttpContextBase httpContext, Object constraint, String parameterName, RouteValueDictionary values, RouteDirection routeDirection)
at System.Web.Routing.Route.ProcessConstraints(HttpContextBase httpContext, RouteValueDictionary values, RouteDirection routeDirection)
at System.Web.Routing.Route.GetRouteData(HttpContextBase httpContext)
at System.Web.Http.WebHost.Routing.HostedHttpRoute.GetRouteData(String rootVirtualPath, HttpRequestMessage request)
怎么了?我该如何解决这个问题?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api