Исключение WCF FaultContracts с использованием SLSvcutil (или svcutil) - PullRequest
1 голос
/ 29 октября 2009

По сути, у меня есть silverlight 2 клиент (следовательно, я использую SLSvcutil), которому требуется доступ к службе WCF.

Кто-нибудь знает, как я могу помешать SLSvcutil.exe украшать OperationContracts с помощью FaultContractAttributes?

Я использую SLSvcUtil против службы WCF, все операции которой оформлены с помощью Faultcontracts.

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 января 2010

РЕДАКТИРОВАТЬ - Я получил его для работы с SL 3 во время выполнения ... Мне пришлось удалить все старые ссылки на System.ServiceModel и System.Net и добавить их обратно из этого места (я запускаю 64-разрядные Windows)

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0

Как только я это сделал - это сработало! Извините, если вы все еще ориентируетесь на среду выполнения 2.0, но я решил опубликовать это обновление на случай, если кто-нибудь найдет эту страницу в будущем ...

Возможно, это просто "моя проблема", поскольку я использую x64 windows ... Вот как выглядит новый файл proj для ссылок на сборки:

<Reference Include="System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.Net.dll</HintPath>
</Reference>    <Reference Include="System.ServiceModel, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.ServiceModel.dll</HintPath>
</Reference>

=============== СТАРЫЙ ответ ниже ===============

Я пытался сделать то же самое без удачи, поэтому я скажу: "Это не может быть сделано в данный момент", и это ДЕЙСТВИТЕЛЬНО раздражает ...

Если вы посмотрите на reference.cs и испущенный .cs, то верхняя часть класса покажет вам, что при использовании «Add Service Reference» вы получите:

// This code was auto-generated by Microsoft.Silverlight.ServiceReference, version 2.0.5.0

Используя SlSvcUtil (кстати, инструмент v3.0), вы получаете:.

// This code was auto-generated by slsvcutil, version 3.0.40624.0

Так что я не думаю, что вы сможете "задний порт" к v2.0. К сожалению - вы также НЕ МОЖЕТЕ использовать SlSvcUtil с версией 3.0! (что мне кажется нелепым - или я просто не могу заставить его работать должным образом)

Я нацеливаюсь на среду исполнения 3.0 и использую SlSvcUtil, и "из коробки" мне это говорит

The type or namespace name 'FaultContractAttributeAttribute' does not exist 
in the namespace 'System.ServiceModel' (are you missing an assembly reference?)

Класс существует в System.ServiceModel 3.0. *, Но Silverlight использует 2.0. * Там, где его нет ... The kicker - попробуйте добавить ссылку на версию 3.0, и вы получите:

You can't add a reference to System.ServiceModel.dll as it was not built against the 
Silverlight runtime. Silverlight projects will only work with Silverlight assemblies

Так что даже если бы вы были на v3.0 - вы были бы SOL - точно так же, как я ...

Надеюсь, кто-нибудь ответит, сообщив нам, КАК это сделать, но я не думаю, что это возможно ... КТО-ТО - ДОКАЗАТЬ МНЕ НЕПРАВИЛЬНО, ПОЖАЛУЙСТА !!! :)

Извините, человек ...

0 голосов
/ 29 октября 2009

Если вы действительно хотите игнорировать контракт данных о сбоях строгого типа для операций, вы можете удалить определение из wsdl сервисов. Но было бы проще удалить его из сгенерированных классов. (Найдите все атрибуты контракта неисправности и замените на "")

...