2016-09-28 7 views
1

ASP .NET MVC5でWebApisを使用してSPA(Singe Page Application)を作成しています。 WebAPISの場合、属性ルーティングを使用しています。ウェブAPI以外のリクエストの場合、私はホームコントローラにマップし、indexアクション がここに私のコード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); 

    } 

} 
} 
を提出

WebApis以外の経路について

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 } 
     ); 

    } 
} 

を次のようにマイWebApiConfig.Register方法であって、私は、次のルートが

が登録されており、私は

 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> 

なぜこれが起こるんこのエラーが出ますか?この行にコメントをつけても構いませんか?

+0

asp.netコアへの移行を検討してください。 –

+0

構成を混合しています。 'app.UseWebApi'は主にOWIN pipline(MVCではなく)ですので、この設定を使用すると、着信要求の検査を引き継ぐため、MVC設定が無効になります。 MVCとWeb APIの両方を混在させている場合は、その行をコメントにしておくことができます。 – Nkosi

+0

これを回答として追加することができれば、回答としてマークすることができます – devanalyst

答えて

2

構成を混在させています。 app.UseWebApiは主にMVCではなくOWIN pipline用ですので、この設定を使用すると、着信要求の検査を引き継ぐため、MVC設定が無効になります。 MVCとWeb APIの両方を混在させている場合は、その行をコメントにしておくことができます。

関連する問題