HttpHandlers x64 问题

发布于 2024-10-26 02:08:00 字数 981 浏览 4 评论 0原文

我开发了一个 .Net 3.5 x64 Web 应用程序,其中在配置中包含自定义 HttpHandler:

<add path="*.class1" verb="GET" type="ClassLibrary1.Class1Handler"/>

当 ClassLibrary1 的平台目标设置为 x86 时,此应用程序可以工作。
但是,当我将其设置为 x64 时,当我运行 Web 应用程序启动时,会出现以下错误(它编译得很好):

配置错误

描述:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当修改您的配置文件。

解析器错误消息:无法加载文件或程序集“ClassLibrary1,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。尝试加载格式不正确的程序。

这是否意味着 HttpHandler 只能在 x86 上编译?
这对我来说没有多大意义。
有人知道会发生什么吗?

编辑1:
ClassLibrary1 项目只是一个空的类库项目,添加了一个 HttpHandler(也是空的)。

编辑2:
编译时我也收到这些警告消息,我很确定它们与这个问题有关:

程序集生成 - 引用的程序集“mscorlib.dll”针对不同的处理器 HttpTest

编辑 3:
我手动编辑了项目文件以强制引用 x64 程序集,如下所示:

这确实抑制了上述警告消息,但问题并未解决。

谢谢!

I developed a .Net 3.5 x64 web application that includes a custom HttpHandler in the config:

<add path="*.class1" verb="GET" type="ClassLibrary1.Class1Handler"/>

This works when the platform target for ClassLibrary1 is set at x86.
However, when I set this to x64 I get the following error when I run web application starts (it compiles just fine):

Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load file or assembly 'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Does this mean that a HttpHandler can be compiled at x86 only?
That doesn't make much sense to me.
Does anyone have an idea of what could be going on?

Edit 1:
The ClassLibrary1 project is just an empty class library project with a single HttpHandler added (which is also empty).

Edit 2:
I am also getting these warning messages when compiling, I am pretty sure they have something to do with this problem:

Assembly generation -- Referenced assembly 'mscorlib.dll' targets a different processor HttpTest

Edit 3:
I manually edited the project file to force references to the x64 assemblies, like this:

<Reference Include="$(Windir)\Microsoft.NET\Framework64\v2.0.50727\System.dll"/>

This does supress the above warning message, but the problem isn't resolved.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

醉南桥 2024-11-02 02:08:00

您可能使用属性 x86 编译了程序集 ClassLibrary1。尝试使用 AnyCPU 标签编译它。

You probably compiled your assembly ClassLibrary1 with the attribute x86. Try to compile it with AnyCPU tag.

泪眸﹌ 2024-11-02 02:08:00

您的依赖程序集之一是使用设置为 x86 而不是 AnyCPU 或 x64 的标志进行编译的,

请参阅 此页面了解如何使用 coreflags.exe 查询有问题的程序集

One of your dependent assemblies is compiled with the flag set to x86 rather than AnyCPU or x64

See this page for how to use the coreflags.exe to query the assebly in question

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文