【问题标题】:Assembly reference not resolving in the Web.config程序集引用未在 Web.config 中解析
【发布时间】:2009-06-23 21:16:13
【问题描述】:

我正在开发由 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 文件夹中。除了 .net 系统程序集之外,这两个 DLL 都没有引用其他程序集

【问题讨论】:

    标签: wcf iis assemblies web-config


    【解决方案1】:

    您是否尝试过给出程序集的全名和类型的全名(命名空间和所有)...

    <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>
    

    【讨论】:

      【解决方案2】:

      运行服务时会发生什么?错误消息可能是虚假的。例如,ReSharper 有时会对配置文件中的程序集引用感到困惑。

      OTOH,其他时候是正确的。

      【讨论】:

      • 感谢您的回复。 IIS托管的WCF服务器的解决方案的最初设计是保持/bin文件夹轻,大部分dll都在扩展的dll文件夹中,该文件夹在web.config文件中指定。当我看到错误消息时,我将所需的 dll 复制到 /bin 文件夹。相反,我应该从项目设置中引用所需的 dll。我的直接问题已解决,但如果必须保留原始设计,我如何引用扩展 dll 文件夹中的 dll。
      • 什么扩展的bin文件夹?你是怎么做到的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多