WCF 契约(Contract)和命名空间?

标签 wcf web-services namespaces datacontract servicecontract

您好,

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

  • 我是否必须使用 http://命名空间还是我可以将其命名为相同的 CLS 命名空间?
  • 如果我需要将 MyApp.IO 下的所有数据契约(Contract)设置为使用 CLS 命名空间,是否有一种简单的方法可以在不手动设置所有数据的情况下执行此操作?
  • 是否有一种简单的方法可以将 CLS 命名空间设置为整个服务及其数据契约(Contract)的契约(Contract)命名空间?
  • 最佳答案

    问题 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想要查询更多的信息

    关于WCF 契约(Contract)和命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11408582/

    相关文章:

    c# - 无法添加服务器引用 : Contract requires Duplex, 但绑定(bind) 'BasicHttpBinding' 不支持它或未正确配置以支持它

    c# - 无法添加服务引用

    java - 如何将 JAX-WS header 转换为字符串?

    vb.net - 在 vb.net 隐式导入库

    python - Python 命名中尾随下划线的优点是什么?

    php - 为什么在 PHP 中使用 "use"关键字来导入核心标识符?

    c# - WCF REST 与 WEB API 之间的区别

    c# - 防止后续服务调用的协商握手

    c# - 我应该使用哪个项目模板来为 Xamarin Forms 创建 Web 服务?

    wcf - WCF 服务与 Web 服务和 REST 服务的区别