我知道以前有人提出过这个问题,但可用的解决方案并没有解决我的问题。
在我的解决方案中,我有一个没有编写的 global.asax 文件。cs 文件中的命名空间和类与继承命名空间和类匹配。
导致问题的原因很简单:我从解决方案中排除了一个目录,然后重新包含它。从那时起,当我尝试构建解决方案时,会出现以下错误:
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 'EnableWebApp.Global'.
Source Error:
Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="EnableWebApp.Global" Language="C#" %>
Source File: /global.asax Line: 1
我已经清理、重建、重新安装了这些文件,重新启动了框架,并重新启动了我的系统。还没有解决任何问题。
全球 "<%@ Application CodeBehind="Global.asax.cs" inherits="EnableWebApp.Global" language="C#" %>"
全球.asax.cs 命名空间启用网络应用 { 公共类全局:System.Web.HttpApplication {
如果有人遇到此问题,有两个简单的解决方法:
- 删除 Global.asax 并通过 Visual Studio 的 Add -> New Item 功能添加一个新项,它将添加正确的命名空间/类型组合
- 确保
Inherits
部分与项目的命名空间以及Global
类型完全匹配。右键单击项目属性以检查命名空间。 因此,如果您的应用程序的命名空间是MyProject.Web
,您应该在此处Inherits="MyProject.Web.Global"
。
在过去的两天里,我一直在与这个错误作斗争。 这是我的场景以及我如何解决它。 (我用VB编码......不如你们大多数人和女孩先进。
1) 我将 Web 代码文件夹添加到我的项目中。
2)我创建了一个动态数据实体,该实体创建了包含公共类CEPTEntities的model1.vb文件
3)我根据找到的指令设置了Global.asax文件路由。 DefaultModel.RegisterContext(GetType(CEPSEntities), new ContextConfiguration() with _{.脚手架所有表 = 真})
3a) CEPS是我的数据实体模型的名称。然后我验证了我的 web.config 文件中的连接字符串是否正确
4)然后我打开modle1.vb文件的属性,并将构建操作从内容(也是默认的)更改为编译。
5)然后做了一个清理和重建,我的应用程序终于在IE中打开了。
希望这能为其他人省去很多麻烦。
右键单击您的 Web 项目,转到"属性",并检查程序集名称和根命名空间是否为"EnableWebApp"
global.asax 实际上附加了 2 个文件,一个标记和一个代码隐藏。
如果您右键单击该文件,您可以选择查看标记,我猜该行中的某处存在命名空间或名称不匹配。
如果没有,您可以发布您的global.asax.cs和标记(应该只有1个文件)吗?
编辑:
我没有立即解释你为什么得到这个结果。
您可以使用 dll 反射器程序扫描网站的 dll 以查找全局类型及其命名空间以验证它是否正确构建到 dll 中吗?
您可以使用此程序:下载ILSpy的链接
如果您使用的是"本地 IIS"并且您的编译路径不是"bin/debug"......
在我看来,IIS 更改了调试下应用程序的物理路径。这发生在关闭/重新打开 VS 并使用 GIT 更改分支时。因此,请仔细检查您的IIS应用程序配置是否保持正确,以防修复它。最后,解决这个烦人问题的解决方法是在我的解决方案中添加一个简单的 consol 项目,该项目作为构建后事件编译和启动,以在 IIS 中自动设置正确的路径:
static int Main(string[] args)
{
int result = 0;
try
{
ServerManager serverManager = new ServerManager();
var myApp = serverManager.Sites["Default Web Site"].Applications["/myApp"].VirtualDirectories[0];
myApp.PhysicalPath = args[0];
serverManager.CommitChanges();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
result = -1;
}
return result;
}
另一个对我有用的解决方案包括被视为主解决方案子项的建筑项目。我打开了与 .NET 网站链接的 .csproj 文件,编译了这个项目,然后重新打开了主解决方案。上一个错误消失了。