1

Windows vista 32 位 - 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 管理器中尝试了很多可能的组合以使其正常工作('httphandlers'、'经典模式'等等......)但我真的被卡住了。我在互联网上找到的信息没有多大帮助。

我做错了什么或错过了什么才能让它发挥作用?

4

3 回答 3

4

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

所有这些教程中说放在type="ClassName, AssemblyName"Web.Config 中的 Handlers 部分的那一行是完全错误的。

我所做的只是将其更改为type="AssemblyName.ClassName",并且在我创建的网站项目和 Web 应用程序项目中,一切都开始工作了。

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

克雷格

于 2012-08-28T14:26:49.780 回答
1

我想通了。我必须制作一个 asp.net 网站项目并将我的 dll 添加为对该项目的引用。

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

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

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

于 2012-05-13T05:19:31.147 回答
1

我知道,这是一个旧线程。但是,几天来我一直在寻找答案,但没有找到一个明确的答案。所以,万一有人遇到类似的情况。

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

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

网络配置:

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

希望这可以帮助。干杯。

于 2014-09-30T23:32:41.150 回答