![](/img/trans.png)
[英]500 Server Error when calling RESTFUL (GET) Web API over HTTP
[英]500 Server Error when calling RESTFUL Web API over HTTP
我的WEB API控制器有以下結構:
public class MyController : ApiController
{
[System.Web.Http.HttpPost]
public bool Method1([FromBody] int id, [FromBody] string token, [FromBody] string deviceID, [FromBody] string username)
{
bool returnValue = false;
//do code business logic here
return returnValue;
}
[System.Web.Http.HttpPost]
public bool Method2([FromBody] int id, [FromBody] string token)
{
bool returnValue = false;
//do code business logic here
return returnValue;
}
}
當我試圖使通過HTTP REST風格的網頁API的任何Method1
或Method2
,我得到一個500內部服務器錯誤。
如果我從任一方法中刪除輸入參數,我就能夠在沒有錯誤的情況下制作Web API。
我通過.NET測試方法對控制器進行了單元測試,邏輯不會產生異常。
我添加了一個名為Get
with without parameters的附加方法,並且能夠使用該服務而沒有任何錯誤。
這是我嘗試使用jQuery在JavaScript中使用Web API的代碼片段:
var uri = "http://127.0.0.1/MyWebApi/api/mycontroller/method2";
var myObject =
{
id: $('#id').val(),
token: $('#token').val()
};
$.post(uri, JSON.stringify(myObject)).done(function (data) {
$('#result').text(data);
})
.fail(function (jqXHR, textStatus, err) {
$('#result').text('Error: ' + err);
});
是什么導致我在初始API控制器結構上獲得500內部服務器錯誤?
這500錯誤可能是因為考慮到您正在使用的HTTP方法(POST),它沒有在服務器中為給定參數找到匹配的Action。
myObject
不應該是這樣的嗎? (令牌代替toke)
var myObject =
{
id: $('#id').val(),
token: $('#token').val()
};
此外,您不需要對JSON對象進行字符串化。 如果應該像這樣工作:
$.post(uri, myObject).done(function (data) {
$('#result').text(data);
})
.fail(function (jqXHR, textStnatus, err) {
$('#result').text('Error: ' + err);
});
我遇到了同樣的錯誤,我花了很長時間才弄清楚導致它的原因。 最簡單的方法是從瀏覽器中檢查您的響應消息。 在IE11中,您可以按F12,轉到網絡選項卡並開始錄制。 然后撥打電話后停止並查看電話。 在我的情況下,我發現由於我即將收到的對象中的循環鏈接,我的返回消息無法序列化。 因此,在Web API方面的一些輕微調整中,我設法讓它工作得很好。 請檢查您的回復 - 您可能會獲得有關錯誤的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.