首页 文章

WCF Contract 和命名空间?

提问于
浏览
1

Hi,

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

  • 我是否必须使用 http:// 命名空间,还是可以将其命名为相同的CLS命名空间?

  • 如果我需要在MyApp.IO下设置我的所有datacontracts以使用CLS命名空间,有没有一种简单的方法可以在不设置所有这些的情况下手动执行此操作?

  • 有没有一种简单的方法可以将CLS名称空间设置为整个服务及其数据对象的合约名称空间?

1 回答

  • 3

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

    问题2.见上文 .

    问题3.您可以为所有 Contract 设置名称空间,如下所示:

    // 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以获取更多信息

相关问题