1
我在ASP .NET MVC5中使用WebApis創建SPA(單頁應用程序)。 對於WebAP我使用屬性路由。對於除網絡API其他請求,我已經配置了映射到Home控制器和索引操作 這裏一個包羅萬象的路線是我的代碼使用IAppBuilder.UseWebApi時的問題
我在StartUp.cs下面的配置代碼文件
using System.Web.Routing;
[assembly: OwinStartup(typeof(MyApp.Startup))]
namespace MyApp
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//app.UseWebApi(GlobalConfiguration.Configuration);
}
}
}
我WebApiConfig.Register方法如下
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
對於除WebApis等航線,我有以下途徑註冊
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "CatchAll",
url: "{*url}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
在啓動類的配置方法
現在,如果我去掉這一行
app.UseWebApi(GlobalConfiguration.Configuration)
,並嘗試訪問任何路線,我得到這個錯誤
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:17212/orders'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'Home'.
</MessageDetail>
</Error>
爲什麼會出現這種情況?保持這條線是否可以評論?
考慮遷移到asp.net核心 –
您正在混合配置。 'app.UseWebApi'主要用於OWIN管道而不是MVC,所以當你使用這個設置時就會否定你的MVC配置,因爲它接管了傳入請求的檢查。如果您正在混合使用MVC和Web API,則可以安全地保留該行的註釋。 – Nkosi
如果你可以添加這個答案,我可以標記爲答案 – devanalyst