我不断寻找一个关于如何使用.NET和Visual Studio 2010编写Web服务的好指南,以便我可以使用AJAX将其用于基于HTML的网站。
我知道有一种方式称为ASMX方式,但现在它更新到ServiceHost,所以我需要的是一个简单的指南,它可以帮助我了解如何使用ServiceHost对象创建asp.net Web服务。
抱歉,如果听起来含糊不清或幼稚。
答案 0 :(得分:2)
将ScriptManager控件放在您的页面上,并添加对.asmx
服务的引用:
<asp:ScriptManager ID="myManager" runat="server">
<Services>
<asp:ServiceReference Path="~/MyService.asmx" />
</Services>
</asp:ScriptManager>
在您的网络服务的代码隐藏中声明您的网络方法(请注意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服务,那么您可以执行以下操作:
使用ScriptMethod属性装饰您的网络方法:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string SayHello(name)
{
return "Hello, " + name;
}
注意设置为True
的{{3}}属性。您可能还需要修改web.config
文件以允许此类交互:
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
现在,您可以向Web服务发出简单的HTTP GET请求,如下所示(示例使用UseHttpGet):
$.ajax({
url: "/MyService.asmx/SayHello?name=Bobby",
success: function(transport) {
alert('Web-service response: ' + transport.responseText);
}
});
希望这会对你有所帮助。