これは本当に馬鹿げたものでなければなりませんが、私は他に何をすべきか考えられません。
Visual Studio 2013-Update 1を使用して、既存のソリューションに空のWeb API 2プロジェクトを作成し、クロスオリジンサポート(cors)パッケージを追加し、基本的なWeb APIコントローラーを作成しました。
WebApiConfigクラスは問題ないようです:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
また、Global.asax
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
次に、アプリケーションを実行します。IIS expressは正常に起動し、ブラウザはアプリケーションのURLで起動しますが、何も機能しないようです。
URLが「localhost:ポート番号」の場合、HTTPエラー403.14-禁止Webサーバーはこのディレクトリのコンテンツを一覧表示しないように構成されています。
「localhost:ポート番号/ api」を試してみると、HTTPエラー404.0-見つかりません探しているリソースが削除されたか、名前が変更されたか、一時的に利用できません。
私はいくつかのブログ、チュートリアル、例を見てきましたが、何か特別なことをする必要があることをどこにも見ていません。誰かが私が行方不明になっているかもしれないものに光を当ててください。
Web Apiには、ルート(この場合は_localhost:port
_)に移動して表示できるデフォルトの表示可能なページ(aspx、htmlなど)がありません。これが通常の動作です。コントローラを介してApiにアクセスするには、MapHttpRoute()
メソッドで指定されたルートテンプレートを使用してアクセスする必要があります。
ApiのGET
メソッドにアクセスするには、ブラウザーを開いて_localhost:port/api/{controllername}
_をURLに配置します。 _{controllername}
_は、最後にControllerが追加されていないコントローラークラスの名前に設定されます。
例:コントローラーが次のように見える場合:
_public class TestController : ApiController {
public HttpResponseMessage Get() {
return something;
}
public HttpResponseMessage Get(int id) {
return something with id;
}
}
_
次に、最初のGet()
のURLは次のようになります。
_localhost:port/api/test
_
そして、2番目のGet(int id)
のURLは次のようになります。
_localhost:port/api/test/5
_
あなたのルート設定が確かにOKなら、Web.configでこれを追加してみることができます:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>