0

我在一个端口 localhost:5739 中运行 asmx 服务,并尝试从其他端口或纯 html + jquery 调用该服务出项目

但我无法访问网络服务

我的网络服务是

 [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld(string text) {
    return "Hello World" + text;
}

我调用网络服务的代码是

            $.ajax(
            {
                type: "POST",
                url: "http://localhost:5739/asmxservices/testservice.asmx/HelloWorld",
                data: '{ "text": "Kartheek"}',                    
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                error: OnError

            });

            function OnSuccess(data, status) {
                alert(data.d);

            };
            function OnError(msg) {
                alert('error = ' + msg.d);
            }
4

3 回答 3

1

您的方法需要是静态的,如下所示:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string HelloWorld(string text) { 
    return "Hello World" + text; 
} 
于 2012-09-13T11:18:19.697 回答
0

看来您的麻烦是由文件放置引起的。调用您的服务的 JS 代码应与您的服务位于同一主机上。只需将 html 文件放在项目根文件夹中,然后在调试时尝试从目录列表中运行它。作为示例:我使用路径测试服务调用文件

http://localhost:51169/2.html

于 2013-02-26T12:15:08.093 回答
0

以下步骤解决了我的问题,希望对某些人有所帮助,

  1. 要允许使用 ASP.NET AJAX 从脚本调用此 Web 服务,请在 asmx 服务类上方包含以下行,例如

[System.Web.Script.Services.ScriptService] 公共类 GetData : System.Web.Services.WebService {

  1. 在 web.config 中的 system.web 下添加协议,如果无法查看配置请点击链接,

https://pastebin.com/CbhjsXZj

<system.web>
<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>
于 2017-08-13T18:53:26.700 回答