2013-02-05 77 views
1

我正在創建一個asmx Web服務。 在項目名稱的Visual Studio 2012我右點擊,並增加了網絡服務名稱UserDetails.asmx在asp.net中創建新的Asmx頁面

現在我想在js文件中使用的Web服務。這樣

$.ajax({ 
    type: "POST", 
    url: "UserDetails.asmx/HelloWorld", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (data) { 
     alert('success'); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 

它顯示錯誤POST HTTP://192.168.9.185/GPS/UserDetails.asmx/HelloWorld 500(內部服務器錯誤)

有沒有在我的代碼或我的任何故障我錯過了一些東西,以致它顯示錯誤。 我ASMX頁

<%@ WebService Language="C#" CodeBehind="~/App_Code/UserDetails.cs" Class="UserDetails" %> 

我的代碼背後

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 

/// <summary> 
/// Summary description for UserDetails 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 
public class UserDetails : System.Web.Services.WebService { 

public UserDetails() { 

    //Uncomment the following line if using designed components 
    //InitializeComponent(); 
} 

[WebMethod] 
public string HelloWorld() { 
    return "Hello World"; 
} 

} 
+0

當您直接從瀏覽器或Fiddler請求ASMX時會發生什麼? HTTP 500響應應該包含具有更多信息的堆棧跟蹤。 – Eilon

+0

我試過 ** http://192.168.9.185/GPS/UserDetails.asmx/HelloWorld** 其工作正常顯示結果 ** Hello World ** – user1926138

+0

@ user1926138只是取消註釋[System.Web.Script.Services.ScriptService] – ZedBee

回答

0

編輯

答案很簡單:只是取消註釋[System.Web.Script.Services.ScriptService]

深挖洞在錯誤信息中使用

error: function (xhr,status, error) { 
     alert("Error"); 
     } 

並檢查xhr顯示實際錯誤是別的東西(只能通過腳本調用類定義上的[ScriptService]屬性的Web服務)。

我在後臺使用了[WebMethod]在我的aspx代碼中,每當我收到這樣的消息時,我發現我傳遞的數據中存在錯誤。因此,嘗試在$就加入data:"{}",()爲this

描述使只讀請求,當

,空數據參數是關鍵。出於未知原因,jQuery在沒有數據時沒有正確設置指定的內容類型。

+0

謝謝它的工作後,取消註釋該行 – user1926138