global.asax 解析器错误无法加载类型“HttpApplication.Global”

问题描述 投票:0回答:1

有人处理过这个关于 global.asax 的晦涩错误吗?根据我在研究中收集到的信息,这可能是 IIS 的事情。因为我的应用程序通常发布到我的网络服务器,但现在它只在本地呈现。

错误屏幕截图

我尝试使用 CodeFile 而不是 Codebehind,但它不会编译我的代码隐藏类。

我还清理了我的垃圾箱并多次重建解决方案,以使其在我的实时服务器上进行编译。

让我知道你尝试过什么,如果你有时间和我一起演练,愿意分享我的其余代码。

错误消息:

Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type 'WorldsStrongestProgrammer2024App.Global'.

Source Error:


Line 1:  <%@ Application CodeBehind="Global.asax.cs" Inherits="WorldsStrongestProgrammer2024App.Global" Language="C#" %>

Source File: /global.asax    Line: 1

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4700.0
c# asp.net .net webforms
1个回答
0
投票

您不能突然将代码文件更改为代码隐藏,除非您使用的是 ASP.NET 网站“应用程序”而不是 ASP.NET 网站。

对于网站,您没有项目文件,请转到文件->打开网站。对于网站,IIS 会编译发布时包含的源代码。

如果您使用“应用程序”,则在发布时会编译源代码,并且页面后面的代码不会发布到服务器(它们被剥离,因此 IIS 不会为您进行站点编译)。

因此,通过将页面从 CodeFile 更改为 CodeBehind,就假设有一个“应用程序”。这意味着站点(IIS)现在不进行代码的站点编译,并且如上所述,实际上您的源代码文件甚至没有发布到服务器。

此规则的一个例外当然是放置在 app_code 文件夹中的代码。在这种情况下,当使用“应用程序”时,我当然不使用app_code,并创建一个名为MyCode的文件夹。原因有很多,但其中之一当然是 Rosslyn 编译器扩展很可能在您要发布到的 Web 服务器上不可用。因此,您希望网站编译在发布时进行。

但是,当使用您自己的 MyCode 文件代替 app_code (您应该这样做)时,放置在该文件夹中的每个类和代码文件(或代码模块,如果使用 vb.net)将需要手动设置构建操作。

这就是构建操作:

enter image description here

因此,您不能突然开始更改页面指令,除非您将它们全部更改,并且现在假设您将使用 ASP.NET 网站“应用程序”,这当然意味着如果您更改一行给定页面的代码,则每次都需要完全重新发布。因此,虽然“网站”选项经常用于简化更新,但您会失去许多项目功能,例如将多个项目合并在一起,更好地解析程序集引用,也许此列表中最重要的是对 .dll 和 .dll 的引用程序集(甚至 Nuget 包).dll 不放置在 bin 文件夹中。这意味着您可以清理项目,甚至删除 bin 文件夹,并清除随着时间的推移积累的内容,并且在构建时解析所有程序集,然后将其复制到 bin 文件夹。 (因此您永远不要引用 bin 文件夹中的 .dll 和程序集)。

因此,如果您使用“网站”,那么您的所有页面都会有 CodeFile。

如果您使用“网站应用程序”,那么您的所有页面都将具有 CodeBehind。

如果您正在将“网站”转换为“网站应用程序”(我强烈推荐),那么您不应该混合使用两种类型的页面指令。它们都应该是一种方式,并且是相同的。

您可能在某个时间点使用“文件”->“打开网站”(这就是您打开 ASP.NET 网站的方式,然后您突然开始打开一个项目文件(“文件”->“打开项目”->选择 .sln 文件)。一般来说,如果该站点是“网站”而不是“网站应用程序”,则不能直接开始使用项目文件。

所以,我会考虑重新命名app_code文件,或者不使用它。无论如何,您可以尝试将 app_code 中代码文件的构建选项设置为“编译”,看看是否有帮助。

因此,它的工作原理取决于您正在处理的项目类型,但您肯定不能突然开始将页面指令从 CodeFile 更改为 CodeBehind。当然,如果您要将网站迁移到“应用程序”,那么是的,您要将 ColdFile 更改为 CodeBehind。

此处概述了如何将网站转换为应用程序:

如何将 ASP.NET 网站转换为 ASP.NET Web 应用程序

© www.soinside.com 2019 - 2024. All rights reserved.