我想生成从mvc视图到WebApi控制器的URL以及从WebApi到MVC操作的URL。通常这些方法运作良好:
// mvc to webapi
@Url.HttpRouteUrl("DefaultApi", new { controller = "Test" })
// webapi to mvc
Url.Link("Default", new { controller = "Home" }
将WebApi移动到OWIN主机后,这些方法会抛出异常,因为Mvc和WebApi不会看到彼此的路径。
System.ArgumentException: A route named 'DefaultApi' could not be found in the route collection.
Parameter name: name
at System.Web.Routing.RouteCollection.GetVirtualPath(RequestContext requestContext, String name, RouteValueDictionary values)
...
当使用OWIN主机配置WebApi时,如何生成这些链接?
更新:我的启动配置:
public void ConfigureWebApi(IAppBuilder app)
{
var config = new HttpConfiguration { DependencyResolver = new StructureMapDependencyResolver(ObjectFactory.Container) };
config.Filters.Add(new HandleHttpErrorAttribute());
config.Filters.Add(new AuthorizeAttribute());
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional });
app.UseWebApi(config);
}