Ссылка службы WCF перестала генерировать код для одного проекта - PullRequest
2 голосов
/ 01 января 2011

У меня есть ссылки на две разные службы WCF в проекте. Я обновил ссылку для одного из сервисов, и теперь для него не создается код. В файле reference.cs вверху есть комментарий «это генерируемый код». Обновление этой же службы в других проектах и ​​обновление другой службы работают нормально. Проблема вызвана только одной ссылкой на службу в этом одном проекте, и я не получаю никакой информации от Visual Studio (она просто говорит, что не смогла сгенерировать код, и я должен посмотреть на другие ошибки, которые не предоставляют никакой информации).

Если я сниму флажок «повторное использование типов в ссылочных сборках», будет сгенерирован код, но я не хочу, чтобы этот проект отличался от других. Я хотел бы решить проблему. Повторная проверка опции типа повторного использования снова приводит к пустому файлу reference.cs. Тип коллекции тоже не имеет значения.

Как мне диагностировать и решить эту проблему?

Обновление:

Кажется, я ошибся. Обновление справочной службы, по-видимому, нарушает генерацию и в других проектах. Я также заметил эти предупреждения:

Предупреждение о пользовательском инструменте: невозможно импортировать wsdl: portType Подробно: возникла исключительная ситуация при запуске расширения импорта WSDL: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Ошибка: тип ISerializable с именем контракта данных 'Exception' в пространстве имен 'http://schemas.datacontract.org/2004/07/System' не может быть импортирован. Пространство имен контракта данных нельзя настроить для типов ISerializable, и сгенерированное пространство имен «TheDefaultNamespaceOfTheProject.ServiceReferenceName» не соответствует требуемому пространству имен CLR «Система». Проверьте, сопоставлено ли требуемое пространство имен с другим пространством имен контракта данных, и попробуйте явно сопоставить его с использованием коллекции пространств имен.

Очевидно, что я изменил пространство имен там, но похоже, что он пытается сопоставить System.Exception с ThatNamespace.Exception? Зачем это нужно, и как я могу это исправить? Я думаю, что это ключ ко всему.

1 Ответ

0 голосов
/ 05 февраля 2015

У меня была похожая ошибка в приложении Silverlight, выполняющем вызовы WCF.Я создал метод WCF, который передал объект Exception в качестве параметра.Оказывается, что объекты исключений не сериализуемы в Silverlight, потому что:

http://blogs.msdn.com/b/suwatch/archive/2009/01/21/wcf-silverlight-exception-and-serialization.aspx

Вот соответствующий отрывок:

DataContractSerializer WCF сериализует s класс исключений через ISerializable(Исключение в .Net Framework реализует ISerializable).Однако в Silverlight нет интерфейса ISerializable.Следовательно, информация сериализации исключений, передаваемых по проводам, не будет установлена ​​в класс исключений.Это относится не только к исключениям, но и к любым типам, реализующим ISerializable в .Net Framework, сериализованном в Silverlight.

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