IIS 和 DFS 上的 asmx WebService 中偶尔会出现“无法加载文件或程序集”

IIS 和 DFS 上的 asmx WebService 中偶尔会出现“无法加载文件或程序集”

我们在两个相同的 Windows Server 2003 机器上托管了一些 ASMX Web 服务。Web 服务的虚拟目录加载在 DFS 共享中,两个服务器都指向同一个共享。我们在互联网和两个 Web 服务器之间有一个负载平衡器。

在一个看似随机的时间间隔内(目前大约每周两次),当用户尝试访问 Web 服务上的方法时,IIS 会针对该方法调用中使用的某个程序集返回错误:“无法加载文件或程序集”,并且每次调用该方法时都会继续报告该错误,直到应用程序池被回收。

我们还没有发现该问题的任何明显模式。以下是我所知道的:

  • 缺少的组件各不相同(但始终是自制组件)
  • 失败的 Web 服务方法各不相同
  • 问题出现的时间或间隔没有明显的规律
  • 问题出现时没有管理员用户访问服务器
  • 失败的方法在一台服务器上可以正常工作,而在另一台服务器上会失败,尽管两台服务器都指向同一个 bin 文件夹
  • 可以通过回收应用程序池并且不做其他更改来解决问题

我已经启用了 Assembly Binder Log,并且知道 Binder 正在正确的位置查找文件。

我们的程序集是针对.Net 3.5 编译的。

答案1

我们也遇到了类似的问题。

我们从未正式弄清楚到底发生了什么,但我们将问题缩小到 web.config 中的模拟级别以及用户对托管程序集文件的文件夹的访问。

我们发现,有时 IIS 工作进程会尝试以访问 Web 请求的用户身份加载程序集。我们可以看到,尝试加载程序集的线程当前正在模拟向某个 asp.net 页面发出请求的用户。

无论如何,我们通过授予域中经过身份验证的用户访问权限解决了该问题。希望您能找到更好的解决方案。

相关内容