我有一個MVC應用程序,當我使用POST請求時會出現404錯誤。所有POST MVC請求給404錯誤
下面的代碼相關位:在它
我有一個的WebAPI控制器(儘管這也與「純」 MVC控制器發生)與一個單獨的方法:
public class GetSomeDataController : ApiController
{
[HttpPost]
public string GetNumbers([FromBody]string value)
{
// Get 10 randomised numbers
return //The numbers as JSON;
}
}
在JavaScript的我有一個Ajax請求:
$.ajax({
type: "POST",
url: "/Api/GetSomeData/GetNumbers/",
data: JSON.stringify(requestData),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: false, // Pass the data in the body of the request rather than in the URI.
})
.done(function (ajaxResult) {
// handle the results
})
.fail(function (e) {
// Handle errors
});
,當我從內VS 2013調試它讓我的10號回來一點問題都沒有。然而,當我運行在IIS 8.5完全相同的代碼...
頁面本身是一個MVC路由頁面,以便路由工作在服務器上,但是當我把一個控制器的動作從POST這是行不通的。
錯誤頁面報告StaticFile處理程序似乎試圖處理請求 - 當然哪個失敗。
我正在試圖弄清楚發生了什麼。有沒有人有任何想法?
這些都是事我還記得想:
添加各種東西的web.config(沒有明顯的效果):
<system.web>
<httpModules>
<add name="UrlRoutingModule"
type="System.Web.Routing.UrlRoutingModule,
System.Web.Routing, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
,
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
和
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
- 我肯定是在集成模式下運行
- 應用程序池的帳戶下運行具有訪問該文件夾
- 應用程序池運行的.NET 4.0
- 禁用和重新啓用ASP.NET 4.5在Windows功能和設置
- ASPNET_REGIIS - 我(不支持IIS 8.5)
更改ExtensionlessUrlHandler集成-4.0請求路徑爲「*」
- 更改ExtensionlessUrlHandler集成-4.0動詞(POST已列入名單)
試試這種方式:'url:「/ Api/GetSomeData」' –
我已經嘗試過了,它不能在VS中調試或從IIS運行 - 請注意,我不希望它成爲WebAPI路由我已經註冊需要一個行動以及一個控制器:'routeTemplate:「api/{controller}/{action}」' – JaySeeAre
檢查這個http://www.asp.net/web-api/overview/web-api- routing-and-actions/routing-in-aspnet-web-api –