当我使用Visual Studio向导在WebServices文件夹中创建名为Hello的webservice时,它会创建以下内容:
namespace MyWebSite.WebServices
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class Hello : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
它在浏览器中对javascript可见,如下所示:
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
ServiceReference serviceReference = new ServiceReference();
serviceReference.Path = "~/WebServices/Hello.asmx";
serviceReference.InlineScript = false;
scriptManager.Services.Add(serviceReference);
从Javascript调用如下:
MyWebSite.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
很好用。我的问题是,我调用的javascript位于一个单独的程序集中,作为服务器控件的一部分,它需要一个不同的命名空间。我要么需要修改程序集的工作方式—以某种方式使webservice的命名空间成为参数,要么需要更改webservice的命名空间,使其与调用匹配。
目前,我正在探索后者。(因为更改程序集将意味着更改另一个也使用此程序集的网站,除非有必要,否则我宁愿不更改)。
所以,我希望我的Javascript调用如下所示:
OtherNamespace.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
我想我可以更改.asmx文件中的名称空间:
namespace OtherNamespace.WebServices
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
...
火车在哪里我的网站.WebServices. 前缀,在调用javascript时来自哪里?它的定义是什么?我怎样才能改变它,使它成为另一种东西?