我有一个将部署到多个域的Web服务。我想摆脱WCF默认名称空间“http://tempuri.org/”,并将其替换为部署了Web服务的域,例如“http://mydomain.com/”。我知道这里最好的解决方案就是让Web服务存在于一个地方,并将该域用作命名空间,但目前这不是我的选择。WCF:我需要用动态名称空间替换“http://tempuri.org/”吗?
我发现这个问题的部分答案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);
http://stackoverflow.com/questions/2397519/programmatically-add-an-attribute-to-a-method-or-parameter-任何帮助?稍后分配?从我读的内容来看,'GetCustomAttributes'返回应用属性的一个克隆,所以你不能修改它。 – 2011-02-24 18:09:32
为什么你需要改变命名空间?它只是一个命名容器。 – 2011-02-24 18:09:57
在MSDN上也发现了这个:http://social.msdn.microsoft.com/forums/en-US/wcf/thread/5573326a-21b3-4d21-b05c-8e00b1674137/ – 2011-02-24 18:11:05