[英]How to debug jQuery ajax POST to .NET webservice
我有一個在本地發布的Web服務。 我寫了一個HTML頁面來測試Web服務。 Web服務期望一個字符串,它將是XML。 當我從VS中調試Web服務時,一切正常。 我可以使用FireBug來查看他們的AJAX調用確實擊中了我的Web服務。 在將Web服務本地部署到IIS之后,它似乎無法正常工作。
我需要知道解決此問題的最佳方法。 我的AJAX js看起來像這樣:
function postSummaryXml(data) {
$.ajax({
type: 'POST',
url: 'http://localhost/collection/services/datacollector.asmx/SaveSummaryDisplayData',
data: { xml: data },
error: function(result) {
alert(result);
},
success: function(result) {
alert(result);
}
});
Web方法如下所示:
[WebMethod]
public string SaveSummaryDisplayData(string xml)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
XmlParser parser = new XmlParser(xmlDocument);
IModel repository = new Repository();
if(repository.AddRecord("TestData",parser.TestValues))
{
return "true";
}
return "false";
}
}
我將返回字符串添加到web方法中,以確保確實從ajax中訪問了Web服務。 問題是這樣的:
在FF中,始終調用“成功”功能,但結果始終為“ NULL”。 而且,Web方法似乎無效(未保存數據)。
在IE中,調用了“錯誤”功能,響應是服務器錯誤:500。我認為(信不信由你)IE給我一個更准確的指示,表明有問題,但我不能確定問題是什么。
有人可以建議我如何公開特定的服務器錯誤消息嗎? 謝謝您的幫助!
您在使用螢火蟲方面步入正軌。
您可能知道的另一個很棒的實用工具是提琴手。
基本上,您希望查看瀏覽器和服務器之間的請求/響應(http流量)。
如果您看不到在本地使用應用程序與基於HTTP流量的IIS之間的區別,則可以在服務器方法中添加更多日志記錄。 查看是否輸入了方法。 如果是,則記錄返回的值)
將全局異常處理添加到您的global.asax中,以便在發生較低級別的異常(例如序列化程序失敗)時仍記錄該異常。
這很臟,絕對不是最好的解決方案,但是它可能使您快速找到目標。 如果您只是直接導航到URL並提供xml
參數作為查詢字符串,那么您應該能夠看到實際的錯誤(只要在Web.config文件中關閉了CustomErrors
)。
http://localhost/collection/services/datacollector.asmx/SaveSummaryDisplayData?xml =任何內容
或一些實際的URL編碼的XML無關緊要,除非導致錯誤的是XML分析。 是的,它使用GET
而不是POST
,但是查看您的代碼應該沒有什么不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.