簡體   English   中英

Javascript-調用ASP.NET WebService-服務器方法'methodName'失敗

[英]Javascript - calling ASP.NET WebService - The server method 'methodName' failed

我已經嘗試解決此問題一段時間了,但尚未成功。 我有一個基本的ASP.NET WebService,我正嘗試從javascript這樣調用。

using System;
using System.Web;
using System.Web.Services.Protocols;
using System.Web.Services;
using System.Web.Script.Services;

namespace RandomWebServices
{
/// <summary>
/// Summary description for WebServices1
/// </summary>
[WebService(Namespace = "http://localhost:2900/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebServices1 : WebService
{
    [WebMethod]
    public string PieTable(string table)
    {
        return table + " - resultant text";
    }
}
}

簡單...是嗎? 那么為什么當我嘗試從javascript調用它時卻得到以下信息:

“錯誤:服務器方法'PieTable'失敗。”

我將WebService稱為如下:

<script type="text/javascript">
function CallService() {
    RandomWebServices.WebServices1.set_defaultSucceededCallback(Callback);
    RandomWebServices.WebServices1.set_defaultFailedCallback(OnError);

    RandomWebServices.WebServices1.PieTable("Pie");

    return false;
}

function Callback(result) {
    alert("asd");

    var outDiv = document.getElementById("outputDiv");

    if (outDiv == null) {
        alert("outputDiv not found");

        return false;
    }
    else {
        alert("outputDiv found");

        outDiv.innerText = result;
    }

    return false;
}

function OnError(result) {
    alert("Error: " + result.get_message());
}
</script>

我正在從以下對象調用javascript:

<input value="Load" onclick="CallService(); return false;" type="button" />

我使用AJAX的ToolkitScriptManager對象來引用WebService:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
<Services>
    <asp:ServiceReference Path="http://localhost:2900/WebServices1.asmx" />
</Services>
</asp:ToolkitScriptManager>

請協助。 提前致謝。 馬可

如果使用.NET 4,則需要進行配置條目以啟用腳本服務。 請參閱http://msdn.microsoft.com/zh-cn/library/bb398998(v=VS.90).aspx 因此,請確保在web.config中有以下部分。

<system.web>
  ...
  <httpHandlers>
    <remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" 
      type="System.Web.Script.Services.ScriptHandlerFactory"
       validate="false"/>
  </httpHandlers>
  ...
<system.web>

要進行問題排查,您可以查看異常的堆棧跟蹤-例如,

function OnError(result) {
    alert("Error: " + result.get_message());
    alert("Stack Trace: " + result.get_stackTrace());
}

嘗試在PieTable方法上應用[ScriptMethod]屬性,當使用JQuery調用Web方法時,這通常可以解決我的問題。

http://msdn.microsoft.com/zh-CN/library/system.web.script.services.scriptmethodattribute.aspx

[WebMethod]
[ScriptMethod]
public string PieTable(string table)
{   
    return table + " - resultant text"; 
} 

我過去發現,在Web服務類上聲明的屬性中,將()放在ScriptService之后似乎解決了一些奇怪的問題。 不知道為什么它可能會起作用,但也值得您嘗試一下。

[WebService(Namespace = "http://localhost:2900/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class WebServices1 : WebService
{
    [WebMethod]
    public string PieTable(string table)
    {
        return table + " - resultant text";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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