【问题标题】:Unable to find Assembly error when using <codeSubDirectories> in web.config在 web.config 中使用 <codeSubDirectories> 时找不到程序集错误
【发布时间】:2010-01-07 15:02:36
【问题描述】:

我有一个在 app_code 部分同时使用 c# 和 vb.net 的网站。不同的语言被分隔到各自的文件夹中,并在 web.config 中正确配置。

<codeSubDirectories>
    <add directoryName="BasicCode"/>
    <add directoryName="CSharpCode"/>
  </codeSubDirectories>

这在 95% 的情况下都能正常工作。在使用 2 个负载平衡服务器的生产环境中,我偶尔会收到如下错误消息:

"找不到程序集 'App_SubCode_BasicCode.xxx, 版本=0.0.0.0,文化=自然, PublicKeyToken=null'。

该站点托管在 IIS7 中,我认为它与动态编译期间分配的 dll 名称有关。我在单个服务器环境中看不到这个问题。这可能是因为当会话平衡到第二台服务器时,动态编译的 dll 名称不同?

【问题讨论】:

    标签: c# .net asp.net vb.net iis-7


    【解决方案1】:

    两个不同的服务器完全有可能为动态程序集生成不同的名称;事实上,我认为这可能是一个死证书。

    然而,问题是为什么一台服务器会生成另一个服务器试图使用的程序集名称?使用沼泽标准负载平衡的 Asp.Net 站点,您永远不会看到这一点。

    网站代码中是否定义了任何类型然后被序列化(视图状态或共享会话状态)?

    如果是这样,那么这可能是问题所在 - 一台服务器从一个动态程序集中对一个对象进行脱水,而另一台服务器尝试对它进行脱水,因为它的版本名称不同。

    也就是说,如果是这样的话,我想我希望看到 TypeLoadException 而不是与程序集加载相关的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 2012-10-26
      • 2015-01-16
      • 2011-02-18
      • 2011-12-05
      • 1970-01-01
      • 2017-01-04
      相关资源
      最近更新 更多