1

我有一个 ASP.NET 2.0 Web 项目。工作得很好。我决定将网站升级到 3.5。升级工作正常。我添加了一个 IHttpHandler,需要在 web.config 中包含以下行:

<add verb="GET,POST" path="MyOperation.asmx" type="MyClass"/>

web.config 中的这一行生成以下错误:“解析器错误消息:无法加载类型'MyClass'。 ”这听起来像是类名中的典型拼写错误。但看起来不是,我检查了 1000 次。然而,真正奇怪的是,“黄屏死机”页面的底部写着:

版本信息:Microsoft .NET Framework 版本:2.0.50727.3082;ASP.NET 版本:2.0.50727.3082

这真的很奇怪。该项目设置为3.5。唯一使用 3.5 特性的代码是 IHttpHandler 实现。如果我从 web.config 中排除该行,则该 Web 项目的所有其余部分都与 2.0 兼容并且可以正常工作。为什么是这样?

[我没有尝试使用 IIS。我使用 ASP.NET 开发服务器。]

[编辑] 我必须道歉,这是我在第一轮中预期的愚蠢的拼写问题。我的 IHttpHandler 实现在一个嵌套类中,正确的类名是“OuterClass+NestedClass”与我在配置文件中使用的 OuterClass.NestedClass。但是,我要感谢所有做出贡献的人,因为我在 CLR 版本控制方面学到了新东西!

4

4 回答 4

4

我认为您需要使用完全限定的类型名称。

喜欢:

<add verb="GET,POST" path="MyOperation.asmx" type="Your.Namespace.MyClass, assembly.name"/>

并且包含 2 的版本信息的错误是正常的,因为 3 和 3.5 的 CLR 没有更改。唯一的变化是额外的单独程序集和语法糖(比如自动化属性是编译器的一个特性而不是运行时)“.net 4”将带有一个新的 CLR。

于 2009-09-07T15:57:25.360 回答
3

版本不是问题(我认为)。.net 2 到 3.5 sp1 使用相同的运行时间。较新的只是新的库和编译器。所以从 asp.net 的角度来看并没有太大的变化。

于 2009-09-07T15:58:58.183 回答
2

ASP.NET 3.5 实际上是带有额外扩展的 2.0。因此,只要服务器安装了 3.5,那么显示您指向 2.0 框架的消息就会确认您已正确设置它。

问题很可能是 olle 建议的,您需要完整的类名、程序集名称。

还要确认您的 /bin 文件夹中有该 dll,并且如果您不是从站点的根目录工作,它是否被标记为应用程序。

于 2009-09-07T16:11:28.140 回答
0

转到项目属性。选择应用程序选项卡。如果您还没有这样做,请将目标框架更改为 .Net Framework 3.5。

于 2009-09-07T16:00:22.327 回答