从 JS 调用 ASP.NET Web 服务

发布于 2024-10-15 21:11:43 字数 223 浏览 1 评论 0原文

我不断寻找有关如何使用 .NET 和 Visual Studio 2010 编写 Web 服务的良好指南,以便我可以使用 AJAX 将其用于基于 HTML 的网站。

我知道有一种称为 ASMX 方式的方法,但现在它已更新为 ServiceHost,因此我需要一个简单的指南,它可以引导我了解如何使用 ServiceHost 对象创建 asp.net Web 服务。

抱歉,如果这听起来模棱两可或幼稚。

I am constantly finding a good guide about how to write a web service using .NET with Visual Studio 2010 so I can utilize it with my HTML based website using AJAX.

I know there was a way called the ASMX way but now it's more updated to ServiceHost so what I need is a simple guide which can drive me through how to create asp.net web service using ServiceHost object.

Sorry if it sounds ambiguous or childish.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界如花海般美丽 2024-10-22 21:11:49

ScriptManager 控件放在页面上并添加对您的 .asmx 服务的引用:

<asp:ScriptManager ID="myManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~/MyService.asmx" />
    </Services>
</asp:ScriptManager>

在您的 Web 服务的代码隐藏中声明您的 Web 方法(注意 ScriptService 属性):

namespace MyServices
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    public class MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public string SayHello(name)
        {
             return "Hello, " + name;
        }
    }
}

现在您可以通过 Javascript 使用 Web 服务,如下所示:

function queryWebService() {
    MyServices.MyService.SayHello('Bobby', 
    function(result, userContext) {
        alert('Web-service response: ' + result);
    }, function(result) {
        alert('Error!');
    });
}

更新

如果您想通过简单地发送 HTTP GET 请求来使用 Web 服务,那么您可以执行以下操作:

装饰您的 Web 方法/library/bb298830.aspx" rel="nofollow">ScriptMethod 属性:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string SayHello(name)
{
    return "Hello, " + name;
}

注意 UseHttpGet 属性设置为 True。您可能还需要修改 web.config 文件以允许这种交互:

<webServices>
    <protocols>
        <add name="HttpGet"/>
    </protocols>
</webServices>

现在您可以向您的 Web 服务发出简单的 HTTP GET 请求,如下所示(示例使用 jQuery.ajax):

$.ajax({
    url: "/MyService.asmx/SayHello?name=Bobby",
    success: function(transport) {
        alert('Web-service response: ' + transport.responseText);
    }
});

希望这会对您有所帮助。

Place the ScriptManager control on your page and add a reference to your .asmx service:

<asp:ScriptManager ID="myManager" runat="server">
    <Services>
        <asp:ServiceReference Path="~/MyService.asmx" />
    </Services>
</asp:ScriptManager>

In the code-behind of your web-service declare you web method (notice the ScriptService attribute):

namespace MyServices
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    public class MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public string SayHello(name)
        {
             return "Hello, " + name;
        }
    }
}

Now you can consume the web-service from the Javascript like the following:

function queryWebService() {
    MyServices.MyService.SayHello('Bobby', 
    function(result, userContext) {
        alert('Web-service response: ' + result);
    }, function(result) {
        alert('Error!');
    });
}

UPDATE

If you want to consume the web-service by simply sending an HTTP GET requests then you can do the following:

Decorate your web-method with a ScriptMethod attribute:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string SayHello(name)
{
    return "Hello, " + name;
}

Notice the UseHttpGet property which is set to True. You probably also need to modify the web.config file to allow this kind of interaction:

<webServices>
    <protocols>
        <add name="HttpGet"/>
    </protocols>
</webServices>

Now you can make a simple HTTP GET request to your web-service like shown below (the example uses jQuery.ajax):

$.ajax({
    url: "/MyService.asmx/SayHello?name=Bobby",
    success: function(transport) {
        alert('Web-service response: ' + transport.responseText);
    }
});

Hope this will help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文