使用SLSvcutil(或svcutil)排除WCF FaultContracts

时间:2009-10-29 18:33:40

标签: wcf silverlight svcutil.exe

基本上,我有一个 silverlight 2 客户端(因此我使用SLSvcutil)需要访问WCF服务。

有人知道如何阻止SLSvcutil.exe使用FaultContractAttributes装饰OperationContracts吗?

我正在针对WCF服务运行SLSvcUtil,该服务的操作都是由Faultcontracts修饰的。

不幸的是,我无法真正提供任何代码,只是想知道是否有人有一个模糊的想法。我似乎无法让 excludeType 开关工作,这是我对如何实现这一点的第一次猜测。

由于

2 个答案:

答案 0 :(得分:0)

如果您确实要忽略操作的强类型故障数据协定,则可以从服务的wsdl中删除该定义。但是从生成的类中删除它会更容易。 (找到所有错误合同属性并替换为“”)

答案 1 :(得分:0)

编辑 - 我使用SL 3运行时... 我不得不删除所有对System.ServiceModel和System.Net的旧引用,并从这个位置添加它们(我运行x64窗口)

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,班级的顶部会显示你使用“添加服务参考”,你会得到:

// 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。不幸的是 - 你也不能在3.0运行时使用SlSvcUtil! (我觉得这很荒谬 - 或者说我无法正常工作)

我正在瞄准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。*它不存在...踢球者 - 尝试添加对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 - 就像我一样......

希望有人可以回复告诉我们如何做到这一点,但我不认为这是可能的...有人 - 证明我错了! :)

对不起男人......