【问题标题】:Changing the namespace in ASP.NET .ASMX webservices?更改 ASP.NET .ASMX Web 服务中的命名空间?
【发布时间】:2010-09-14 14:43:33
【问题描述】:

我正在尝试从 javascript 调用 ASP.NET .asmx Web 服务,使用的不是 Visual Studio 在创建它时使用的默认命名空间。

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

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)]
    ...

但这不起作用。我收到“未定义其他命名空间”错误。显然,尽管 .asmx 文件中的命名空间和 javascript 调用中的前缀具有相同的值,但它们引用的不是相同的东西。

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

【问题讨论】:

  • 您在进行更改后是否更新了您的网络参考?

标签: javascript asp.net web-services asmx


【解决方案1】:

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

【讨论】:

  • 不。那就是我所缺少的。当我打开 .asmx 文件时,VS 一直在调出设计器,它没有显示任何用处。我明确地打开了标记,看到了需要更改的内容。
猜你喜欢
  • 2011-10-03
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多