1

你好,

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

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

1 回答 1

3

问题 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 文章以获取更多信息

于 2012-07-10T14:57:50.650 回答