簡體   English   中英

如何將jQuery Ajax POST調試到.NET Web服務

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM