asp.net webservices(.asmx)

时间:2017-04-19 10:55:21

标签: c# ajax soap asmx

内部webservices使用soap来处理HTTP。但是当我们尝试访问[WebMethod]的Web服务时,如何在jquery ajax的URL基础上开始工作? SOAP仍然在使用jQuery ajax吗?如果有,怎么样?如果不是为什么不呢?您可以使用以下示例来保持简单。

以下是asmx的代码:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyService : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorld()
    {          
        return "Hello World";
    }
}

1 个答案:

答案 0 :(得分:0)

可以使用WebMethods来呼叫AJAX,因为传输是HTTP。你可以在互联网和SO上找到很多这样的例子:

jQuery AJAX call to an ASP.NET WebMethod

Calling ASP.Net WebMethod using jQuery AJAX

SOAP是有效载荷的信封(带有一些附加功能)。是否要在WebMethod中使用它取决于您。

以下是在Web应用程序项目中创建Hello World服务的方法:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

以下是如何使用jQuery消费它:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>

<script>
    console.log($.ajax);
    $.ajax({
        type: "POST",
        url: "http://localhost:55501/WebService1.asmx/HelloWorld",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response.d) {
            alert(response.d);
        }
    });
</script>

来自服务器的响应将是{d: "Hello World"},因为jQuery将添加Accept标头“application / json”。

以下是如何从控制台应用程序中使用它:

static void Main(string[] args)
{
    var client = new HttpClient();
    var uri = new Uri("http://localhost:55501/WebService1.asmx/HelloWorld")

    // Get xml
    var response = client.PostAsync(uri, new StringContent("")).Result;
    Console.WriteLine(response.Content.ReadAsStringAsync().Result);

    Console.WriteLine();

    // Get Json
    var response1 = client.PostAsync(uri,
        new StringContent("", Encoding.UTF8, "application/json")).Result;
    Console.WriteLine(response1.Content.ReadAsStringAsync().Result);
}

将输出:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>

{"d":"Hello World"}