Метаданные службы Wcf недоступны из-за неправильного имени класса - PullRequest
0 голосов
/ 25 октября 2011

В настоящее время я пишу сервис WCF.Служба возвращает объект, тип которого относится к пользовательскому классу с именем «Система».Фрагмент кода выглядит следующим образом:

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

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

Но я столкнулся с проблемой при запуске службы wcf.Сообщение об ошибке:

Не удалось добавить службу.Метаданные службы могут быть недоступны.Убедитесь, что ваша служба работает и предоставляет метаданные.

c: \ Users \ xxx \ AppData \ Local \ Temp \ Тестировать проекты клиентов \ 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 Ответ

1 голос
/ 25 октября 2011

Когда у вас есть строка:

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

Проблема в том, что компилятор ищет тип Runtime в только что определенном вами классе System, а не в пространстве имен System.

Если вы поставите global: перед System.Runtime, он по крайней мере скомпилируется.

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

Обратите внимание на следующее, которое иллюстрирует вашу точную проблему с классом System: Как: использовать псевдоним глобального пространства имен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...