如何避免 BizTalk 消息和 WCF 服务数据契约之间的 xsd 中的名称冲突

发布于 2024-12-03 20:55:52 字数 171 浏览 1 评论 0原文

请考虑以下事项:我有 BizTalk 项目,在其中我放置了消息的 xsd 架构。 这些模式位于命名空间“A”中。我有另一个网络服务,它也使用带有命名空间“A”的数据契约。 因此,当我向第一个项目(即 Biztalk)添加服务引用时,VS 会为第二个项目中的数据契约生成架构。 因此,我有两个具有相同命名空间和根元素的模式。

Consider the following: I have BizTalk project and inside it I have placed xsd schemas for messages.
Those schemas are in namespace "A". I have another web service, it uses datacontract with namespaces "A" too.
So when I add a service reference to the first project which is Biztalk, VS generates schemas for datacontracts that are in the second project.
Thus I have 2 schemas with the same namespace and root element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

单调的奢华 2024-12-10 20:55:52

好吧,我想我现在可以看到你的问题了。那么我的问题是,为什么会出现名称冲突?如果生成的架构是从正在运行的服务实例生成的,那么您不需要编写自己的架构,只需使用生成的架构即可。

或者,我可以以不同的方式理解这一点:您开发的模式是用于不同的目的,但它们恰好与生成的模式共享相同的根节点名称和命名空间。在这种情况下,您应该通过更改目标命名空间和/或根节点名称来重构非生成的架构。

最佳实践是永远不要在 BizTalk 服务器中的消息之间重复使用目标命名空间。事实上,当您构建解决方案时,编译器会在您执行此操作时发出警告。

你可以这样做吗?

OK I think I can see your problem now. My question would then be why do you have the name-clash in the first place? If the generated schemas are generated from a running instance of your service then you do not need to code your own schemas, you can just use the generated ones.

Or, I can understand this a different way: the schemas you have developed are for a different purpose, but they just happen to share the same root node name and namespace as the generated schemas. In this case you should refactor your non-generated schemas by either changing the target namespace and/or the root node name.

It is best practise never to re-use target namespaces across messages in BizTalk server. Infact when you build your solution the compiler issues a warning when you do this.

Is this possible for you to do this?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文