【发布时间】: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返回应用属性的克隆,因此您无法修改它。 -
为什么需要更改命名空间?它只是一个命名容器。
-
在 MSDN 上也找到了这个:social.msdn.microsoft.com/forums/en-US/wcf/thread/…
-
谢谢,伙计们。我想更改名称空间以尝试遵循我读过的最佳实践。我会查看这些链接,看看它们会把我带到哪里。
-
最好不要使用 tempuri.org。为每个部署更改命名空间并不是最佳做法。
标签: wcf dynamic namespaces