Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Javascript—调用ASP.NET WebService—服务器方法';方法名称';失败_C#_Javascript_Asp.net_Web Services - Fatal编程技术网

C# Javascript—调用ASP.NET WebService—服务器方法';方法名称';失败

C# Javascript—调用ASP.NET WebService—服务器方法';方法名称';失败,c#,javascript,asp.net,web-services,C#,Javascript,Asp.net,Web Services,我试图解决这个问题已经有一段时间了,但还没有成功。 我有一个基本的ASP.NET Web服务,我正试图从javascript本身调用它 using System; using System.Web; using System.Web.Services.Protocols; using System.Web.Services; using System.Web.Script.Services; namespace RandomWebServices { /// <summary> /

我试图解决这个问题已经有一段时间了,但还没有成功。 我有一个基本的ASP.NET Web服务,我正试图从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";
    }
}
}
使用系统;
使用System.Web;
使用System.Web.Services.Protocols;
使用System.Web.Services;
使用System.Web.Script.Services;
命名空间随机Web服务
{
/// 
///WebServices1的摘要说明
/// 
[WebService(命名空间=”http://localhost:2900/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[脚本服务]
公共类WebServices1:WebService
{
[网络方法]
公共字符串表(字符串表)
{
返回表+“-结果文本”;
}
}
}
简单的。。。对 那么,为什么当我尝试从javascript调用它时,会得到以下结果:

“错误:服务器方法'PieTable'失败。”

我对Web服务的调用如下:

<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>

函数CallService(){
RandomWebServices.WebServices1.set_defaultSucceededCallback(回调);
随机webservices.WebServices1.set_defaultFailedCallback(OnError);
随机webservices.WebServices1.PieTable(“Pie”);
返回false;
}
函数回调(结果){
警报(“asd”);
var outDiv=document.getElementById(“outputDiv”);
if(outDiv==null){
警报(“未找到outputDiv”);
返回false;
}
否则{
警报(“找到outputDiv”);
outDiv.innerText=结果;
}
返回false;
}
函数OnError(结果){
警报(“错误:+result.get_message());
}
我从以下对象调用javascript:

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

我使用AJAX的ToolkitScriptManager对象引用Web服务:

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

请帮忙。 提前谢谢。
Marco

如果您未使用.NET 4,则需要执行配置条目以启用脚本服务。看见因此,请确保web.config中有以下部分

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

我发现,在web服务类上声明的属性中,将()放在ScriptService之后似乎解决了某些奇怪的问题。不知道为什么它会起作用,但在你的情况下也值得一试

i、 e


尝试在PieTable方法上应用[ScriptMethod]属性,这通常可以解决我在使用JQuery调用webmethods时遇到的问题

function OnError(result) {
    alert("Error: " + result.get_message());
    alert("Stack Trace: " + result.get_stackTrace());
}
[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";
    }
}
[WebMethod]
[ScriptMethod]
public string PieTable(string table)
{   
    return table + " - resultant text"; 
}