由于类名错误,无法访问Wcf服务元数据

时间:2011-10-25 05:29:58

标签: wcf system metadata

目前我正在编写WCF服务。该服务返回一个对象,其类型是名为“System”的用户定义类。代码段如下:

[DataContract]
public class System
{
   // ....
}

[ServiceContract]
public interface DemoServcie
{
    [OperationContract]
    System GetSystem();
}

但是我在运行wcf服务时遇到了一个问题。错误消息是:

  

无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据。

     

c:\ Users \ xxx \ AppData \ Local \ Temp \ Test Client Projects \ 10.0 \ 6909a900-97bd-4efb-aae9-6c2e9b23e4b9 \ Client.cs(321,50):错误CS0426:类型名称'Runtime'在'Demo.DomainModel.System'类型中不存在   c:\ Users \ xxx \ AppData \ Local \ Temp \ Test Client Projects \ 10.0 \ 6909a900-97bd-4efb-aae9-6c2e9b23e4b9 \ Client.cs(264,18):错误CS0426:类型名称'Runtime'不存在在“Demo.DomainModel.System”类型中   ...

但是,如果我将类名“System”重命名为其他名称,例如“System1”,则可以。我猜“系统”是一个保留的命名空间名称,不能使用。这是真的吗?

1 个答案:

答案 0 :(得分:1)

当你有这条线时:

public partial class System : object, System.Runtime.Serialization.IExtensibleDataObject
{ ... }

问题是编译器在您刚定义的System类中查找Runtime类型,而不是在System Namespace中查找。

如果你把global:放在System.Runtime前面,它至少会编译。

public partial class System : object, global:System.Runtime.Serialization.IExtensibleDataObject
{ ... }

查看以下内容,说明您对System类的确切问题:How to: Use the Global Namespace Alias