簡體   English   中英

當localhost:端口號在iis express中的瀏覽器地址時,web api顯示403.14錯誤

[英]web api shows 403.14 error when localhost:port number is in browser address in iis express

這必須是非常愚蠢的東西,但我想不出還有什么可做的。

使用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:port number / api”,我會收到HTTP錯誤404.0 - 未找到您要查找的資源已被刪除,名稱已更改或暫時不可用。

我查看了幾個博客,教程,示例,我還沒有看到任何特殊需要做的事情。 有人可以對我可能遺失的內容有所了解嗎?

Web Api沒有可以通過導航到根目錄查看的默認可查看頁面(aspx,html等)(本例中為localhost:port )。 這是正常的行為。 要通過控制器訪問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

第二個Get(int id)的url如下所示:

localhost:port/api/test/5

如果您的路由配置確定無誤,您可以嘗試在Web.config中添加它:

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM