【问题标题】:Changing asp.net web service namespace after deployed部署后更改 asp.net Web 服务命名空间
【发布时间】:2011-02-22 10:55:19
【问题描述】:

由于一些不幸的事件,我们在几个月前发布了一个带有 tempuri-命名空间的网络服务,但没有人注意到(不是在我们公司,也不是连接到网络服务的公司),尽管从那时起它就上线了,很多公司(我猜大概是 25 家)已经访问了这个网络服务。

现在我正在考虑纠正这个错误并将命名空间固定为适当的值。 唯一的问题是,一旦我们这样做,连接到此 Web 服务的所有程序和服务都会停止工作。我真的不能允许这种情况发生。

有没有什么方法可以修复命名空间以备将来使用,或者让 Web 服务在两个命名空间下作为一个 Web 服务运行?

我可以做些什么来摆脱 tempuri-namespace 并修复它而不需要与所有外部公司同步更改?

我完全没有想法,所以任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: asp.net web-services namespaces


    【解决方案1】:

    你确定所有使用 web 服务的东西都会停止工作吗?我见过的大多数东西都不会关心命名空间是否发生了变化。即,如果您创建 Web 引用或使用 Visual Studio 中的 WSD 工具来使用 Web 服务,那么即使 Web 服务上的 XML 命名空间发生更改,它也不会中断。它根本不在 C# 命名空间中使用它。

    【讨论】:

    • 感谢您的快速响应!是的,我已经为自己制作了一个演示工具,并使用了一个测试环境来查看当我们修复命名空间时会发生什么:我的演示工具不再工作了。我不得不在visual studio中使用“更新网络参考”并重新编译,然后它又可以工作了。我还检查了其中两家外部公司,我可以比大多数其他公司更容易与之交谈,他们尝试过并且还必须更新他们的软件,因为它不再工作 - 因此我想到了其他任何替代方式公司不受此类变化的影响。
    • 哦,我忘记了:“停止工作”实际上是指唯一要更改的是更新 Web 引用并重新编译,当然其他所有内容,传递值,获取值,仍然有效同样的方法。当命名空间改变时,它只是程序的发送部分停止工作。
    【解决方案2】:

    您能等到下一次发布您的 Web 服务集吗?此时,无论如何他们都需要使用新的 WSDL 重新编译。

    【讨论】:

    • 时间不是我只想摆脱 tempuri-default 的问题。当我们更新服务时,我们通常只更新 XML 结构/XSD,而不发布新版本。并且公司通常不必使用新的 WSDL 重新编译,我们会经常更新(扩展!)某些部分,这从来都不是问题,只有命名空间更改会严重影响事情。
    • 我很确定更改 WSDL 的命名空间是一项重大更改,并且如果您的客户不需要重建,就无法做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2010-09-07
    • 2011-10-03
    • 2011-09-05
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多