【问题标题】:webservice not being called未调用 Web 服务
【发布时间】:2012-06-18 12:23:54
【问题描述】:

我正在开发一个 ASP.NET Web 应用程序。

我想使用 Jquery ajax 来调用 Web 服务。网络服务将返回一个字符串。

这是我的网络服务:

[WebService(Namespace = "http://localhost/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 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 MyWebService : System.Web.Services.WebService
{

    [WebMethod]
    public string GetStringForPerson(string Personname, int StartYear, int EndYear)
    {
        string S = "Hello" + Personname + " You where born between " + StartYear + " and " + EndYear;
        return S;
    }
}

以及调用它的 Ajax 函数:

function GetStringForPerson(Name) {
        $.ajax({
            type: "POST",
            url: "Service/MyWebService.asmx/GetStringForPerson",
            dataType: "json",
            data: "{'Personname':Name, 'StartYear':'2001', 'EndYear':'2005'}",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
                alert(XMLHttpRequest.status);
                alert(errorThrown);
            }
        });
    }

但是当我调用它时,我得到一个错误 500,“内部服务器错误”

我在 web 方法中设置了一个断点,但没有到达。

可能是什么问题?

谢谢

【问题讨论】:

标签: c# asp.net web-services jquery


【解决方案1】:

我看到的一个错误是Name 变量,它不是作为字符串发送,也不是作为变量发送。 所以将此行更改为:

data: "{'Personname':'" + Name + "', 'StartYear':'2001', 'EndYear':'2005'}",

【讨论】:

  • @youssef 如果名称包含像' 这样的任何字符,它可能会破坏你的行,也可以考虑使用encodeURIComponent对其进行编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2014-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多