【发布时间】:2010-02-19 03:18:31
【问题描述】:
我有一个 C# 程序在 XP Pro SP3 上的 IIS 中作为 CGI 应用程序运行。在我引用库程序集类并在程序代码中使用它之前,它运行良好。如果我手动运行 CGI 程序,它会加载并执行。但是,当它由 IIS 运行时,尽管引用的程序集与父可执行文件位于同一目录中,但它无法绑定。这是我得到的绑定日志:
=== 预绑定状态信息 === 日志:用户 = STEVIENEW\IUSR_STEVIENEW 日志:DisplayName = VOEvent,版本=3.0.7.0,文化=中性,PublicKeyToken=null (完全指定) 日志:Appbase = file://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/ 日志:初始 PrivatePath = NULL 调用程序集:MsgChkCGI,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null。 === LOG:此绑定在默认加载上下文中开始。 LOG:未找到应用程序配置文件。 LOG:使用来自 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config 的机器配置文件。 LOG:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。 日志:正在尝试下载新的 URL 文件://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent.DLL。 日志:正在尝试下载新的 URL 文件://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent/VOEvent.DLL。 日志:正在尝试下载新的 URL 文件://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent.EXE。 日志:正在尝试下载新 URL file://?/C:/Documents and Settings/Robert B. Denny/My Documents/iis/vomsgtst/VOEvent/VOEvent.EXE。
Appbase 是正确的(尽管 URI 中的 '?' 是什么????也许这是一个提示)。程序集 voevent.dll 绝对与 MsgChkCGI.exe 位于同一目录(Appbase!)中。如果我只是双击 exe,它会正确启动(并且由于缺少 CGI 环境变量而出现错误,但这是意料之中的)。
有人知道怎么回事吗?
【问题讨论】:
-
很奇怪,fusion binder连我放的MsgChkCGI.exe.config文件都找不到!我尝试使用程序集的确切路径/版本向其中添加 assemblyBIding 信息。它甚至找不到@#$%^ app.config 文件!怎么了?
-
路径中的那个问号是红旗。
-
数据点:我在我古老的 O'Reilly WebSite Pro 服务器上尝试了这个 CGI,也在 XP Pro 上,它运行良好!!!所以这是一个特定于 IIS 的问题,它处理在 .NET CLR 下运行的 CGI 程序。我需要解决它,因为这个 CGI 需要在我的 IIS 系统上运行。
标签: c# .net iis cgi assembly-resolution