gpt4 book ai didi

javascript - 更改 ASP.NET .ASMX web 服务中的 namespace ?

转载 作者:行者123 更新时间:2023-11-29 18:35:30 25 4
gpt4 key购买 nike

我正在尝试从 javascript 调用 ASP.NET .asmx web 服务,使用的不是 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);

它是这样从 Javascript 中调用的:

MyWebSite.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});

这很好用。我的问题是我的调用 javascript 在一个单独的程序集中,作为服务器控件的一部分,它需要一个不同的命名空间。我要么需要重新设计程序集的工作方式——以某种方式使 web 服务的命名空间成为参数,要么我需要更改 web 服务的命名空间,以便它与调用相匹配。

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

所以,我希望我的 Javascript 调用看起来像这样:

OtherNamespace.WebServices.Hello.HelloWorld(function(rval){{alert(rval);}});

我以为我可以只更改 .asmx 文件中的命名空间:

namespace OtherNamespace.WebServices
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
...

但这行不通。我收到“OtherNamespace is not defined”错误。显然,即使 .asmx 文件中的 namespace 和 javascript 调用中的前缀具有相同的值,它们也不是引用相同的东西。

MyWebSite.WebServices 在哪里。前缀,在调用javascript从何而来?它在哪里定义?我怎样才能改变它,让它变成别的东西?

最佳答案

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

关于javascript - 更改 ASP.NET .ASMX web 服务中的 namespace ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com