我正在开发由IIS托管的WCF服务。我需要将KnownType属性添加到我的基类。添加KnownType属性的一种方法是在Web.config文件中添加一个部分,如下所示:
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="MyBase, MyBaseDll">
<knownType type="MyDerived, MyDerivedDll"/>
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
但是当我的鼠标在MyBase上时,我收到了错误消息。错误消息是“无效的模块资格:无法解析程序集MyBaseDll”。 MyDerivedDll的错误消息相同。
其他信息:
MyBaseDLL.dll和MyDerivedDLL.dll都在IIS / bin文件夹中。两个DLL都不引用.net系统程序集以外的其他程序集
答案 0 :(得分:2)
您是否尝试过提供程序集的全名和类型的全名(名称空间和所有内容)......
<add type="MyNamespace.MyBase,
MyBaseDLL, Version=v.v.v.v, Culture=neutral,
PublicKeyToken=XXXXXX">
<knownType type="MyNamespace.MyDerived,
MyDerivedDLL, Version=v.v.v.v, Culture=neutral,
PublicKeyToken=XXXXXX"/>
</add>
答案 1 :(得分:0)
运行服务时会发生什么?错误消息可能是虚假的。例如,ReSharper有时会对配置文件中的程序集引用感到困惑。
> OTOH,其他时候,这是正确的。