gkd*_*kdm 105 c# asp.net webforms namespaces global-asax
在我的.Net 2.0 Asp.net WebForms应用程序中,我的Global.asax包含以下代码:
<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>
Run Code Online (Sandbox Code Playgroud)
但是当我构建时,我得到一个错误陈述 -
无法加载"MyNamespace.Global"类型.
这似乎是因为Global.asax文件中的编译器没有看到MyNamespace命名空间(在文件Global.asax.cs后面的代码中定义)(在R#intellisence中没有显示..).事实证明这是一个非常难以破解...任何帮助将不胜感激!
注意:Global.asax和Global.asax.cs位于同一文件夹中.
注意2:使用csc从vs提示符编译时,编译正常
sta*_*ona 161
我遇到的导致此问题的一种情况是,您通过"构建配置"为构建指定了平台.
如果指定x86作为构建平台,visual studio将自动将bin/x86/Debug指定为此项目的输出目录.这对于其他项目类型非常有效,但ASP.NET期望将程序集输出到Bin文件夹的Web应用程序除外.
我在我的情况中发现它们是输出到两个(Bin和Bin/x86/Debug),除了一些dll,并且莫名其妙地是最重要的一个是你的web应用程序dll,从Bin中丢失夹.
这显然导致了编译问题,因此导致"无法加载类型全局"异常.清理解决方案并删除程序集对后续构建没有任何影响.我的解决方案是将Web应用程序的项目设置中的输出路径更改为Bin(而不是bin/x86/Debug).
Phi*_*ove 17
您是否更改了项目的命名空间?我偶尔会看到这种情况,我在Project Properties对话框中更改了命名空间,但Visual Studio没有更改namespace现有代码文件中的声明.
小智 14
我是asp .net开发的新手,我遇到了类似的问题.
我把这个类更新为一个partial类,它运行正常.
public partial class Global : System.Web.HttpApplication
Run Code Online (Sandbox Code Playgroud)
这是另一本书。当您从同一端口号启动多个Web应用程序时,似乎会发生这种情况。
基本上,我有两个分支需要工作,有一个主分支,一个暂存分支和一个发布分支。当我将分支切换到暂存分支时,我注意到它正在使用相同的端口地址配置,因此我选择对其进行更改。然后,我收到另一个警告,该保留与另一个已配置的应用程序冲突。IIS Express服务器对此很敏感,无论出于何种原因,它都会对配置产生影响。
通过简单地选择第三个未受影响的端口,此问题就消失了,因为它随后将端口映射到了新的目录映射(我的分支在磁盘上的位置不同)。我注意到了这一点,因为我试图更改指向的类型名称,Global.asax但是即使重新启动服务器后类型名称也没有改变,所以很明显,IIS Express部署没有反映出我正在更改的代码。
因此,在您为此失去太多睡眠之前,请尝试更改当前用于运行Web项目的IIS端口号。
小智 5
在VS 2015中对我来说效果很好。现在我可以使用Global事件了。我的Global.asax档案有这行
<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>
Run Code Online (Sandbox Code Playgroud)
然后我将类文件Global.asax.cs放在AppCode文件夹中
public partial class Global : HttpApplication
{
public Global()
{
//
// TODO: Add constructor logic here
//
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这个能帮上忙
| 归档时间: |
|
| 查看次数: |
130339 次 |
| 最近记录: |