[英]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.