2013-09-23 8 views
5

"5.0.rc1"のバージョンの "Microsoft.AspNet.WebApi.SelfHost" NuGetパッケージで再生しています(現在の安定版も試しましたが)残念ながらApiControllerの実装に設定されたルートを解決するためのアプリケーション設定を取得できません。ASP.NET WebAPI Selfhostがコントローラへのルートを解決しませんでした

アプリケーションは非常に簡単で、ほぼすべての例で見つけることができます。メインクラスに自己ホストサービスが存在する.NETコンソールアプリケーションが含まれています。

using System.Web.Http.SelfHost; 
using System.Web.Http; 
using System; 
namespace EP.Server 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var config = new HttpSelfHostConfiguration("http://localhost:60064"); 
     config.Routes.MapHttpRoute(
      name: "Default Route", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     using (var server = new HttpSelfHostServer(config)) 
     { 
      server.OpenAsync().Wait(); 
      Console.WriteLine("Server ist running on "+config.BaseAddress + " hit ENTER to stop."); 
      Console.ReadLine(); 
      server.CloseAsync().Wait(); 
     } 
    } 
} 
} 

と同じプロジェクトに存在し、ApiControllerクラスから継承する別のコントローラクラスがあります。

using System.Web.Http; 

namespace EP.Server 
{ 
class UsersController : ApiController 
{ 
    [HttpGet] 
    public string Get() 
    { 
     return "Hello I'm a user..."; 
    } 
} 
} 

いずれかのブラウザからサービスを呼び出すと、このようなエラーメッセージが表示されます。

<Error> 
<Message>No HTTP resource was found that matches the request URI 'http://localhost:60064/api/Users'.</Message> 
<MessageDetail>No type was found that matches the controller named 'Users'.</MessageDetail> 
</Error> 

誰かが間違っていることを知っていますか?残念ながら、私はWeb上で同様の問題や質問を見つけることができませんでした。

ありがとうございました!

+0

私のコントローラは既に公開されていてエラーが続く... :( – JobaDiniz

答えて

14

Web APIコントローラはpublicである必要があります。

+0

Ohhh boy、もちろん彼らはすべきだし、すべて正常に動作する...私に責任がある... – ddankovics

+0

Hey Filip、ありがとう私はあなたのブログからあなたのHOWTOを読んでいたのでとても面白いです。あなたが答えていることは素晴らしいです。私は別の質問がありますか?外部ライブラリ。私が今達成しようとしているのは、WebAPIのコアサービスを再起動せずに新しいサービスを設定したいということです。AppConfigで新しいサービスを確認し、要求があれば読み込みたいのですが、あなたはまだ解決策を見つけていますか? – ddankovics

関連する問題