【问题标题】:WCF Contracts and namespaces?WCF 合同和命名空间?
【发布时间】:2012-07-10 07:32:28
【问题描述】:

嗨,

WCF 中数据/服务协定的默认命名空间是"http://tempuri.org/"。通过设置ServiceContract.NamespaceServiceBehavior.Namespace,我们可以获得自定义命名空间。不过,我确实对此有一些疑问:

  1. 我必须使用 http:// 命名空间还是可以将其命名为同一个 CLS 命名空间?
  2. 如果我需要在 MyApp.IO 下设置我的所有数据合同以使用 CLS 命名空间,有没有一种简单的方法可以做到这一点而无需手动设置所有这些?
  3. 是否有一种简单的方法可以将 CLS 命名空间设置为整个服务及其数据合同的合同命名空间?

【问题讨论】:

    标签: wcf web-services namespaces datacontract servicecontract


    【解决方案1】:

    问题 1. 命名空间可以是任何东西。人们通常使用某种形式的 URI,但它不必指向实际的网页。人们通常会在命名空间中使用版本标识符,但没有关于您应该做什么的规则。

    问题 2。见上文。

    问题 3. 您可以像这样为所有合约设置命名空间:

    // This overrides the standard namespace mapping for all contracts 
    // in Contoso.CRM. 
    [assembly: ContractNamespace("http://schemas.example.com/crm",
       ClrNamespace = "Contoso.CRM")]
    namespace Contoso.CRM
    {
        // The namespace is overridden to become: 
        // http://schemas.example.com/crm.
        // But the name is the default "Customer".
        [DataContract]
        public class Customer
        {
            // Code not shown.
        }
    }
    

    您可以查看此MSDN Article 了解更多信息

    【讨论】:

    • 谢谢!我试图将命名空间设置为相同的 ClrNamespace,这可行吗?你说它必须是一个URI?为什么?
    • 看来我对 Microsoft 的文档阅读过多。它可以是任何东西;我会相应地更新我的答案。好收获!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 2014-03-03
    • 2010-11-15
    • 2011-11-26
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多