从OWIN链接Web Api到MVC,反之亦然

时间:2013-11-28 20:23:32

标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing owin asp.net-web-api-routing

我想生成从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);
}

0 个答案:

没有答案