我目前正在編寫一個C#web服務,它有幾個方法,其中一個必須接收HTTP POST請求。我做的第一件事就是改變web服務項目中的web.config文件,如下所示。.NET Web服務收到HTTP POST請求(500)內部服務器錯誤
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpPostLocalhost"/>
<add name="Documentation"/>
</protocols>
</webServices>
我可以在本地運行Web服務,當我在瀏覽器上的方法點擊,我可以看到它處理HTTP POST請求,並接受ARGS =字符串,因爲我的Web方法的簽名接受一個字符串參數命名參數。然後,我使用下面的代碼通過一個測試ASP.NET應用程序來測試此消息以觸發HTTP POST請求。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ConfigurationManager.AppSettings["PaymentHubURL"].ToString());
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
StringBuilder sb = new StringBuilder();
sb.Append("message_type=");
sb.Append(HttpUtility.UrlEncode("Txn_Response"));
byte[] bytes = UTF8Encoding.UTF8.GetBytes(sb.ToString());
request.ContentLength = bytes.Length;
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(bytes, 0, bytes.Length);
}
string test;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream());
test = reader.ReadToEnd();
}
但是,當我運行這個我得到「遠程服務器返回一個錯誤:(500)內部服務器錯誤」。如果我刪除參數,通過刪除stringbuilder和字節代碼,以及在Web服務中沒有參數,它的工作。所以這顯然是一個參數問題。我實際上想發送更多數據,並且在Web服務中使用了string []參數,但這也失敗了。
任何人都可以幫忙嗎?
你應該首先看錯誤細節,啓用細節顯示。你是否在調試模式下嘗試瞭解錯誤發生的位置? – Artemiy 2010-11-15 15:05:23
是的,我在德魯模式下使用,asp.net應用程序發送請求和Web服務接收。但它並沒有進入調試,假定因爲參數不匹配。 – Neil 2010-11-15 15:09:38
您可否複製您的網絡服務方法的簽名?我剛創建了一個測試服務,用你發佈的代碼向它發出了一個請求,並且它工作正常。 – 2010-11-15 16:47:40