gpt4 book ai didi

WCF:我需要用动态命名空间替换 "http://tempuri.org/"吗?

转载 作者:行者123 更新时间:2023-12-04 22:31:40 25 4
gpt4 key购买 nike

我有一个将部署到多个域的 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);

最佳答案

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

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

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

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

关于WCF:我需要用动态命名空间替换 "http://tempuri.org/"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com