WCF:我是否需要替换;http://tempuri.org/" 使用动态名称空间?

WCF:我是否需要替换;http://tempuri.org/" 使用动态名称空间?,wcf,dynamic,namespaces,Wcf,Dynamic,Namespaces,我有一个将被部署到多个域的web服务。我想去掉WCF的默认名称空间“,”并将其替换为部署web服务的域,例如“.”我知道这里最好的解决方案就是让web服务存在于一个地方,并使用该域作为名称空间,但目前这不是我的选择 我找到了这个问题的部分答案。在这篇文章中,建议的答案是在配置文件中设置URL属性,但我恐怕不太明白答案。这个URL属性到底在哪里?此外,由于我无法控制的原因,将使用此web服务的客户端应用程序没有app.config文件,因此该客户端应用程序中的所有配置都必须在代码中设置。我不确定这

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

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

编辑:为了澄清,我试图删除的对“”的引用位于由svcutil.exe生成的.cs文件中

e、 g


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

因为名称空间不一定是URL,所以您不必为每个环境更改它

另一方面,您应该选择一个名称空间,并始终如一地使用它。可能类似于
http://services.mydepartment.mycompany.com/myservice/
。您真的不想发布仍然使用
http://tempuri.org/
,这表明对名称空间缺乏了解



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

——有什么帮助吗?以后再分配?从我所读的内容来看,
GetCustomAttributes
返回应用属性的克隆,因此您无法修改它。为什么需要更改名称空间?这只是一个命名容器。在MSDN上也找到了这个:谢谢,伙计们。我想更改名称空间,以便尝试遵循我读过的最佳实践。我会查看这些链接,看看它们会带我去哪里。最好不要使用tempuri.org。为每次部署更改名称空间不是最佳做法。是的,我想很明显我很困惑:)我想我对名称空间理解得足够好。我想我遇到的麻烦是确切地知道在WCF web服务代码中的什么地方设置这个东西。我一直在尝试,我知道我更改了错误的值,因为在我更改了值之后,我最终没有找到与web服务文件相关的错误。请尝试
[ServiceContract(命名空间=”http://services.mydepartment.mycompany.com/myservice/)
谢谢。为了澄清,我在我原来的帖子中添加了一个编辑,描述了我试图更改的对“”的引用。我可能一开始就应该把它包括在内,但当时我没有想到。不是为了“了解你的情况”,而是为了试图理解:你以为我们会知道你指的是哪个“tempuri.org”,有办法改变它,但你只是错过了它。准确吗?我试图了解在写关于名称空间的文章时,我认为理所当然的是什么。我现在明白了我做错了什么,以及为什么我感到困惑。我在ServiceContract、ServiceBehavior和DataContract中添加了一个名称空间,有效地消除了tempuri。但是,我忘记了在客户端更新对我的类的引用,以便它们引用新的名称空间。所以,这可以归结为一个非常简单的错误,是一个新手在太大的压力下犯的:)
[System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IEmailService/SendEmail", ReplyAction = "http://tempuri.org/IEmailService/SendEmailResponse")]
void SendEmail(Services.Internal.CorrespondenceWebService.Email email);