"命名空间ASP中不存在ASP.global_asax"

Bar*_*xto 52 c# asp.net asp.net-mvc razor

我在App_Code上创建了一个RazorFunctions.cshtml文件

@functions {
    public static string GetActiveClassIf(string controllerName, string actionName = null)
    {
        var routeData = @HttpContext.Current.Request.RequestContext.RouteData;
        string currentController = routeData.Values["controller"].ToString();
        string currentAction = routeData.Values["action"].ToString();
        return controllerName == currentController &&
            (String.IsNullOrEmpty(actionName) || currentAction == actionName) ? "active" : "";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,它给我2个错误(编译获得成功和站点工作没有问题)但错误很烦人.

RazorFunctions.cshtml作为内容(尝试编译但当然不能与cshtml文件一起使用)

Global.asax.cs是:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        ModelMetadataConfig.RegisterModelMetadata();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
        //Database.SetInitializer(new DropCreateDatabaseAlways<ApplicationDbContext>());
    }
}
Run Code Online (Sandbox Code Playgroud)

<%@ Application Codebehind="Global.asax.cs" Inherits="Bouron.Web.MvcApplication" Language="C#" %>
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用App_Code,所以我不知道还能做什么,所有搜索返回ASP.NET 1-2的结果,是剃刀甚至不存在的过时所以我不知道怎么可以我解决了这个问题

我正在使用Visual Studio 2015(以防万一)

Bar*_*xto 45

经过进一步调查后,我发现这是一个已知问题.

来源:https://support.microsoft.com/en-us/kb/3025133

ASP.NET和Web开发

  • 当您创建Web窗体4.5 WAP并打开Web窗体页时,您会在错误列表窗口中收到以下错误:

  • 该项目将毫无问题地运行.错误CS0234类型或命名空间名称'global_asax'在命名空间'ASP'中不存在(您是否缺少程序集引用?)错误CS0234名称空间'System'中不存在类型或命名空间名称'Linq'(是你吗?缺少程序集引用?)假设您在Visual Studio 2015 RC中使用C#和VB的新语言功能.在Web窗体页或Razor视图中使用C#或VB时收到运行时错误.

要解决此问题,请安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet包.该软件包将替代基于Roslyn的提供程序,用于ASP.NET的内置CodeDom提供程序.

  • 答案中引用的来源是Visual Studio 2015**RC**.我正在使用VS 2015**Update 1**并看到`global_asax`错误但不是`Linq`错误.遗憾的是,NuGet包没有摆脱`global_asax`错误. (10认同)
  • 我需要在安装上面的软件包后重新启动VS2015 RTM才能解决这个问题. (9认同)
  • 无论出于何种原因,我还必须打开文件,它在Visual Studio中抛出一个错误,使其停止显示在错误列表中.这就像intellisense在我打开它之前没有重新考虑该文件. (7认同)
  • 这对我不起作用 - 即使安装了推荐的nuget软件包,我仍然必须打开帮助文件,否则我会收到错误.真烦人 (3认同)
  • 这对我有用.但是在安装了DotNetCompilerPlatform后,我开始收到有关无效路径的NuGet错误.如果您遇到同样的问题,那么解决方案是:http://stackoverflow.com/a/31826795/573208 (2认同)

Orl*_*iam 23

我遇到过同样的问题.

我手动编辑生成的文件file.cshtml.72cecc2a.cs(它在AppData\Local\Temp\Temporary ASP.NET Files\root)并更改ASP.global_asaxSystem.Web.HttpApplication,错误消失了.

这是生成的代码:

protected static ASP.global_asax ApplicationInstance {
    get {
        return ((ASP.global_asax)(Context.ApplicationInstance));
    }
}
Run Code Online (Sandbox Code Playgroud)

我改成了:

protected static System.Web.HttpApplication ApplicationInstance {
    get {
        return ((System.Web.HttpApplication)(Context.ApplicationInstance));
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会发生这种情况.

  • 这有效但在更新文件后,问题再次出现.看到我的解决方案答案,这是visual studio 2015的一个已知问题 (4认同)

Lan*_*her 16

我发现如果我在App_Code运行构建时在Visual Studio 2015 中打开文件,那么我就不会得到错误.一旦我关闭文件,错误就会再次出现.