【问题标题】:WCF: Do I Need to replace "http://tempuri.org/" with a dynamic namespace?WCF:我需要用动态命名空间替换“http://tempuri.org/”吗?
【发布时间】:2011-07-03 18:32:06
【问题描述】:

我有一个将部署到多个域的 Web 服务。我想去掉 WCF 默认命名空间“http://tempuri.org/”,并将其替换为部署 Web 服务的域,例如“http://mydomain.com/”。我知道这里最好的解决方案就是让 Web 服务存在于一个地方,并将该域用作命名空间,但目前这不是我的选择。

我找到了这个问题的部分答案here。在这篇文章中,建议的答案是在配置文件中设置一个 URL 属性,但恐怕我不太明白答案。这个 URL 属性到底在哪里?此外,由于我无法控制的原因,将使用此 Web 服务的客户端应用程序没有 app.config 文件,因此该客户端应用程序中的所有配置都必须在代码中设置。我不确定这是否重要,但我想我会提到它,以防万一。

编辑:澄清一下,我试图删除的对“http://tempuri.org”的引用位于 svcutil.exe 生成的 .cs 文件中。

例如

[System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IEmailService/SendEmail", ReplyAction = "http://tempuri.org/IEmailService/SendEmailResponse")]
void SendEmail(Services.Internal.CorrespondenceWebService.Email email);

【问题讨论】:

  • stackoverflow.com/questions/2397519/… -- 有什么帮助吗?以后分配?根据我的阅读,GetCustomAttributes 返回应用属性的克隆,因此您无法修改它。
  • 为什么需要更改命名空间?它只是一个命名容器。
  • 谢谢,伙计们。我想更改名称空间以尝试遵循我读过的最佳实践。我会查看这些链接,看看它们会把我带到哪里。
  • 最好不要使用 tempuri.org。为每个部署更改命名空间并不是最佳做法。

标签: wcf dynamic namespaces


【解决方案1】:

您可能会将 XML 命名空间与 URL 混淆。下面是一个不是 URL 的命名空间示例:urn:schemas-microsoft-com:datatypes

由于命名空间不一定是 URL,因此您不必为每个环境都更改它。

另一方面,您应该选择一个命名空间,并始终如一地使用它。也许像http://services.mydepartment.mycompany.com/myservice/ 这样的东西。您真的不想发布仍然使用 http://tempuri.org/ 的服务,因为这表明对命名空间缺乏了解。


针对您更新的问题:这些命名空间存在于 svcutil.exe 生成的 .cs 文件中,因为它们存在于服务的元数据中。您需要在服务中更改它们,并且在创建或更新客户端时,它将具有正确的命名空间。

【讨论】:

  • 是的,我想很明显我很困惑 :) 我认为我对名称空间的理解已经足够好了。我想我遇到的麻烦是确切地知道在 WCF Web 服务代码中的哪个位置来设置这个东西。我一直在尝试,但我知道我正在更改错误的值,因为在更改值后,我最终会收到与未找到 Web 服务文件相关的错误。
  • 试试[ServiceContract(Namespace="http://services.mydepartment.mycompany.com/myservice/")]
  • 谢谢。为了澄清起见,我在原始帖子中添加了一个编辑,描述了我试图更改的对“tempuri.org”的引用。我可能一开始就应该把它包括在内,但当时我并没有想到。
  • 不是“处理你的案子”,而是试图理解:你以为我们会知道你指的是哪个“tempuri.org”,并且有办法改变它,但你刚刚错过了它。那准确吗?我正在尝试了解在撰写有关命名空间的文章时认为是理所当然的。
  • 我现在明白我做错了什么,以及为什么我感到困惑。我为我的 ServiceContract、我的 ServiceBehavior 和我的 DataContract 添加了一个命名空间,它有效地摆脱了 tempuri。但是,我忘记在客户端更新对我的类的引用,以便它们引用新的命名空间。所以,这归结为一个新手在太大压力下犯的一个非常简单的错误:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
相关资源
最近更新 更多