代码之家  ›  专栏  ›  技术社区  ›  Jeff Dege

更改中的命名空间ASP.NET.ASMX网站服务?

  •  1
  • Jeff Dege  · 技术社区  · 16 年前

    当我使用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时来自哪里?它的定义是什么?我怎样才能改变它,使它成为另一种东西?

    1 回复  |  直到 16 年前
        1
  •  4
  •   JohnH    7 年前

    你更新了ASMX和代码隐藏文件了吗?ASMX标记中也有一个引用。