it-swarm.com.de

"ASP.global_asax ist nicht im Namespace ASP vorhanden"

Ich habe eine RazorFunctions.cshtml-Datei in App_Code erstellt

@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" : "";
    }
}

und wenn ich kompiliere, bekomme ich 2 Fehler (Kompilierung bringt Erfolg und Arbeit ohne Probleme), aber die Fehler sind ärgerlich.

Die RazorFunctions.cshtml sind als Inhalt (versucht kompilieren, funktioniert aber nicht mit cshtml-Dateien natürlich)

Global.asax.cs ist:

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>());
    }
}

und

<%@ Application Codebehind="Global.asax.cs" Inherits="Bouron.Web.MvcApplication" Language="C#" %>

Dies ist das erste Mal, dass ich App_Code verwende, also weiß ich nicht, was ich sonst noch tun soll. Alle Suchergebnisse geben Ergebnisse von ASP.NET 1-2 zurück Ich löse das.

Ich verwende Visual Studio 2015 (nur falls es wichtig ist)

49
Bart Calixto

Nach weiteren Untersuchungen stellte ich fest, dass dies ein bekanntes Problem ist.

quelle: https://support.Microsoft.com/en-us/kb/3025133

ASP.NET und Webentwicklung

  • Wenn Sie ein Web Forms 4.5-WAP erstellen und eine Web Form-Seite öffnen, erhalten Sie folgende Fehler im Fenster Fehlerliste:

  • Das Projekt läuft ohne Probleme. Fehler CS0234 Der Typ- oder Namespace-Name 'global_asax' ist im Namespace 'ASP' nicht vorhanden (fehlt eine Assemblyreferenz?) Fehler CS0234 Der Typ- oder Namespace-Name 'Linq' ist im Namespace 'System' nicht vorhanden. (Fehlt eine Assemblyreferenz?) Angenommen, Sie verwenden neue Sprachfeatures für C # und VB in Visual Studio 2015 RC. Sie erhalten einen Laufzeitfehler, wenn Sie C # oder VB in einer Web Form-Seite oder in Rasiereransichten verwenden.

Installieren Sie das Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet-Paket, um dieses Problem zu umgehen. Dieses Paket ersetzt den Roslyn-basierten Anbieter für die integrierten CodeDom-Anbieter für ASP.NET.

44
Bart Calixto

Ich hatte das gleiche Problem. 

Ich habe die generierte Datei file.cshtml.72cecc2a.cs manuell bearbeitet (sie befand sich um AppData\Local\Temp\Temporary ASP.NET Files\root) und ASP.global_asax in System.Web.HttpApplication geändert, und der Fehler wurde behoben.

Dies ist der generierte Code:

protected static ASP.global_asax ApplicationInstance {
    get {
        return ((ASP.global_asax)(Context.ApplicationInstance));
    }
}

Ich habe es geändert in:

protected static System.Web.HttpApplication ApplicationInstance {
    get {
        return ((System.Web.HttpApplication)(Context.ApplicationInstance));
    }
}

Ich weiß nicht, warum das so ist.

19
Orlando William

Ich habe festgestellt, dass ich die Fehler nicht bekomme, wenn ich die Dateien in App_Code in Visual Studio 2015 geöffnet habe, wenn ich den Build ausführte. Sobald ich die Dateien schließe, werden die Fehler erneut angezeigt.

14
Lance Fisher

Nachdem Sie eine Vielzahl der hier vorgeschlagenen Lösungen ausprobiert haben, stellt sich heraus, dass das Beenden von Visual Studio 2015 und der Neustart ausreichend waren, um die Lösung/das Projekt erneut erfolgreich zu kompilieren.

3
starlocke

Zwei Dinge, die ich zur Behebung dieses Problems unternommen habe, waren, das Framework neu auszurichten und es dann wieder zu ändern (zuvor wurde 4.5.1 in 4.5 und zurück geändert.)

Danach hatte ich eine Menge Fehler mit T4MVC, die ich auch verwendete, ich habe es auf die neueste Version aktualisiert, aber ich konnte sehen, dass T4MVC in der Quellcodeverwaltung auf dem Targeting Framework 4.5 installiert war. Wenn Sie ein neues Nuget-Paket neu installieren, ändert sich dies Zielgerüst, das wurde in 4.5.1 geändert

Danach hat alles funktioniert. Ich habe nicht getestet, ob Sie nur den zweiten Teil dieser Antwort benötigen, aber ich würde es zuerst versuchen.

1
Jim Wolff

Ich habe Microsoft.CodeDom.Providers.DotNetCompilerPlatform für mein Webprojekt installiert und dann das Paket entfernt. Der Fehler ging weg.

0
spine4iller

Klicken Sie einfach mit der rechten Maustaste auf Ihr Lösungsprojekt und klicken Sie auf Reinigen. Ich habe das getan und es DID für mich gearbeitet. Ich teile dieses, weil, wer weiß, ob es jemand anderen hilft, wie es mir hilft. 

0
Af'faq

Ich habe diesen Fehler behoben, indem ich meinen Code aus Global.asax.cs in Startup.cs verschoben und Global.asax gelöscht habe, sodass in meinem Projekt keine Codebehind-Dateien vorhanden sind. Siehe diese Frage für weitere Informationen.

0
rfoster