0

AreaRegistration に以下のルートがマッピングされています。

public override void RegisterArea(AreaRegistrationContext context)
    {
        if (context != null)
        {
            context.Routes.MapHttpRoute(
                name: "API_Default",
                routeTemplate: "Areas/Test/AIO/api/{controller}/{id}",
                defaults: new
                {
                    id = RouteParameter.Optional
                });

Global.asax ファイルを見ると、HttpRoute が登録されており、RouteTable.Routes に {System.Web.Http.WebHost.Routing.HttpWebRoute} としてリストされていることがわかります。

問題は、URL...https://myRoot/Areas/Test/AIO/api/AioApi/testまたはにアクセスするとhttps://myRoot/Areas/Test/AIO/api/AioApi、500 内部サーバー エラーが発生することです。

実際のエラーを表示する方法がわかりません。コードをステップ実行すると、Application_BeginRequest を離れた後に何も表示されません。

私のコントローラーコード:

public class AioApiController : ApiController
{
    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

API コントローラーをヒットできない理由についての洞察はありますか? 同じコンテキストで通常の MVC コントローラーをヒットできます。

どんな助けでも大歓迎です!

4

1 に答える 1

0

WebApi でわかったことの 1 つは、2 つの Route コレクションがあることです:System.Web.Routing.RouteCollectionSystem.Web.Http.HttpRouteCollection. ApiController派生物が適切に機能するためには、後者を使用する必要があると思います (しかし、思い出せません) (幸いなことに、構文は同じです)。

于 2012-08-14T10:32:13.947 に答える