2016-12-05 19 views
0

webAPIプロジェクトを作成しましたが、IISでホストを開始したいと考えています。RouteAttributeとIISアプリケーションを使用すると404エラーが発生する

コントローラのメソッドは次のようになります。

[TokenAuthentication] 
    [HttpGet] 
    [Authorize(Roles=Roles.PING)] 
    [Route("~/Ping")] 
    public DateTime Ping() 
    { 
     return DateTime.UtcNow; 

    } 

私WebApiConfigは、次のようになります。

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     var cors = new EnableCorsAttribute("*", "*", "*"); 
     config.EnableCors(cors); 
     config.MapHttpAttributeRoutes(); 
     GlobalConfiguration.Configuration.Filters.Add(new ValidateModelAttribute()); 
     //config.Routes.MapHttpRoute(
     // name: "DefaultApi", 
     // routeTemplate: "{controller}/{id}", 
     // defaults: new { id = RouteParameter.Optional } 
     //); 
    } 
} 

私は、Visual Studioを経由して、プロジェクトを実行し、リンクhttp://localhost:53722/pingに行くとき私が得ます私が期待している不正な応答。

仮想パス "/ Account"を持つアプリケーションにIIS上のWebサイトを置くと、404応答が返され、StaticFile Handlerを使用しようとしています。

オンラインで検索すると、runAllManagedModulesForAllRequestsがtrueに設定されています。私はまた、 "/アカウント/"のように見えるConfigure ASP.NET Web API application as a Virtual Directory under ASP.NET MVC applicationが経路に干渉してはならないことを発見しました。

同じサイトで複数のマイクロサービスを実行しているため、APIをルートディレクトリに配置できません。

仮想ディレクトリを使用してルートを取得するにはどうすればよいですか?

おかげで、 スティーブン

答えて

0

は、各サイトでは、アプリケーションとして実行されなければならないといない仮想ディレクトリ(理想的にはそれぞれが独自のアプリケーションプール付き)。あなたはそれ多分何かhttp://blah.com/subapp/ping

のようにサブフォルダ/アプリケーションで、このAPIを実行している場合は、ボックスのうち

あなたは、通常、これはあなたにhttp://blah.com/ping のURLを与えるだろう

[Route("ping")] 

のために行くだろう

これは私が持っているすべてです...

関連する問題