IIS 7 + HTTP 自定义处理程序错误:无法加载文件或程序集 系统找不到指定的文件



Windows vista 32 bit - C# - .NET 4 - sqlite - IIS 7

我正在构建一个小项目,其中包含一个自定义 HTTP 处理程序,用户可以在其中请求 XML 文件,项目将生成该文件并将其发送给用户。它应该足够灵活,可以发送其他东西,例如 json。

一切都很顺利,直到我不得不部署处理程序。我创建了一个库 (dll( 文件,其中包含用于提供所请求信息的逻辑。我已经打开了IIS管理器,并为调试bin文件创建了一个虚拟目录(后来我把它变成了一个应用程序,它没有区别(。

我遵循了无数示例和教程,例如:

我从这个开始:http://support.microsoft.com/kb/308001

http://msdn.microsoft.com/en-us/library/bb515343.aspx

msdn.microsoft.com/en-us/library/46c5ddfy.aspx

但没有运气。正如您可能已经读到的那样,我没有使用任何 asp.net 网站,即使我确实有一个添加到 bin 文件夹中的 web.config,它看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true" />
    <directoryBrowse enabled="false" />
    <handlers accessPolicy="Read, Script, Execute">
      <add name="LigoManagedHandler" path="*" verb="*" type="Ligo.Service, Ligo" resourceType="Unspecified" preCondition="integratedMode" />
    </handlers>
  </system.webServer>
</configuration>

当我尝试在浏览器中运行处理程序时,出现以下错误:

Could not load file or assembly 'Ligo' or one of its dependencies. The system cannot find the file specified. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Ligo' or one of its dependencies. The system cannot find the file specified.

我已经在IIS管理器中尝试了许多可能的组合来使其工作("httphandler","经典模式"等......(,但我真的卡住了。我在互联网上找到的信息并没有多大帮助。

我做错了什么或错过了什么才能让它工作?

这个咆哮中的某些东西引发了一个想法,我偶然发现了答案。

所有那些教程中说type="ClassName, AssemblyName"放入 Web.Config 中的处理程序部分的行都是完全错误的。

我所做的只是将其更改为type="AssemblyName.ClassName",然后一切开始工作,无论是在我创建的网站项目还是我创建的 Web 应用程序项目中。

我在集成模式下运行 IIS 7.5,所以 YMMV。

克雷格

我想通了。我必须创建一个 asp.net 网站项目,并将我的dll添加为该项目的参考。

我阅读了这个线程,它提供了在互联网上不清楚的信息。

http://forums.asp.net/t/1088861.aspx/1?What+causes+the+quot+Could+not+load+type+quot+problem+

它应该声明,如果没有aspnet网站项目,就不可能制作httphandler。 还是我弄错了? 互联网上的例子不正确! 或提供的信息太少。

我知道

,这是一个古老的线程。然而,几天来我一直在寻找答案,但没有找到一个明确的答案。因此,如果有人遇到类似的情况。

可以将自定义 Http 处理程序创建为独立的类库项目,并在 IIS 中使用它。

在 IIS 上,使用 ASP4 集成模式添加新应用程序。将编译的DLL放入bin文件夹中(这就是我一直缺少的(。似乎很明显它应该在那里;花了一些时间来弄清楚这一点。:)

web.config:

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <system.webServer>
    <handlers>
      <add verb="*" path="*.ogg" name="test" type="Namespace.Classname"/>
    </handlers>
  </system.webServer>
</configuration>

希望这有帮助。干杯。

最新更新