Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否更改ASP.NET.ASMX webservices中的命名空间?_Javascript_Asp.net_Web Services_Asmx - Fatal编程技术网

Javascript 是否更改ASP.NET.ASMX webservices中的命名空间?

Javascript 是否更改ASP.NET.ASMX webservices中的命名空间?,javascript,asp.net,web-services,asmx,Javascript,Asp.net,Web Services,Asmx,我尝试从javascript调用ASP.NET.asmx webservice,使用的不是Visual Studio创建它时使用的默认名称空间 当我使用Visual Studio向导在WebServices文件夹中创建名为Hello的Web服务时,它会创建以下内容: namespace MyWebSite.WebServices { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(Conform

我尝试从javascript调用ASP.NET.asmx webservice,使用的不是Visual Studio创建它时使用的默认名称空间

当我使用Visual Studio向导在WebServices文件夹中创建名为Hello的Web服务时,它会创建以下内容:

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);
MyWebSite.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
OtherNamespace.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
它是从Javascript调用的,如下所示:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);

ServiceReference serviceReference = new ServiceReference();
serviceReference.Path = "~/WebServices/Hello.asmx";
serviceReference.InlineScript = false;

scriptManager.Services.Add(serviceReference);
MyWebSite.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
OtherNamespace.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
那很好。我的问题是,我调用的javascript位于一个单独的程序集中,作为服务器控件的一部分,它需要一个不同的名称空间。我要么需要修改程序集的工作方式——以某种方式将Web服务的名称空间作为参数,要么需要更改Web服务的名称空间,使其与调用匹配

目前,我正在探索后者。(因为更改程序集将意味着更改另一个也使用此程序集的网站,除非有必要,否则我宁愿不这样做)

因此,我希望我的Javascript调用如下所示:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);

ServiceReference serviceReference = new ServiceReference();
serviceReference.Path = "~/WebServices/Hello.asmx";
serviceReference.InlineScript = false;

scriptManager.Services.Add(serviceReference);
MyWebSite.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
OtherNamespace.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});
我原以为可以更改.asmx文件中的名称空间:

namespace OtherNamespace.WebServices
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    ...
但这不起作用。我得到一个“OtherNamespace未定义”错误。显然,尽管.asmx文件中的名称空间和javascript调用中的前缀具有相同的值,但它们引用的内容并不相同


MyWebSite.WebServices在哪里。前缀,在调用javascript时来自哪里?它的定义是什么?我如何更改它,使其成为其他文件?

您是否同时更新了ASMX和代码隐藏文件?ASMX标记中也有一个引用。

更改后是否更新了web引用?否。这就是我错过的。当我打开.asmx文件时,VS一直在介绍设计器,该文件没有显示任何用处。我明确地打开了标记,看到了需要更改的内容。