web-dev-qa-db-ja.com

「ASP.global_asaxは名前空間ASPに存在しません」

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

コンパイルすると、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>());
    }
}

そして

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

App_Codeを使用するのはこれが初めてなので、他に何をすべきかわかりません。すべての検索でASP.NET 1-2の結果が返されます。カミソリが存在しない時代遅れなので、どうすればこれを解決します。

Visual Studio 2015を使用しています(重要な場合に備えて)

51
Bart Calixto

さらに調査した結果、これは既知の問題であることがわかりました。

ソース: https://support.Microsoft.com/en-us/kb/30251

ASP.NETおよびWeb開発

  • Webフォーム4.5 WAPを作成してWebフォームページを開くと、エラーリストウィンドウに次のエラーが表示されます。

  • プロジェクトは問題なく実行されます。エラーCS0234型または名前空間名 'global_asax'は名前空間 'ASP'に存在しません(アセンブリ参照がありませんか?)エラーCS0234型または名前空間名 'Linq'は名前空間 'System'に存在しません(あなたですかアセンブリ参照がありませんか?)Visual Studio 2015 RCでC#およびVBの新しい言語機能を使用すると仮定します。 WebフォームページまたはRazorビューでC#またはVBを使用すると、ランタイムエラーが表示されます。

この問題を回避するには、Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGetパッケージをインストールします。このパッケージは、ASP.NETのインボックスCodeDomプロバイダーをRoslynベースのプロバイダーに置き換えます。

45
Bart Calixto

同じ問題がありました。

生成されたファイルfile.cshtml.72cecc2a.csAppData\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));
    }
}

私はそれを次のように変更しました:

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

なぜこれが起こっているのか分かりません。

22
Orlando William

ビルドを実行するときにApp_CodeのファイルをVisual Studio 2015で開いていると、エラーが発生しないことがわかりました。ファイルを閉じると、エラーが再び表示されます。

16
Lance Fisher

ここで提案されているさまざまなソリューションを試した後、単にVisual Studio 2015を終了して再起動するだけで、ソリューション/プロジェクトをもう一度正常にコンパイルできるようになりました。

3
starlocke

これを解決するために私がやった2つのことは、フレームワークを再ターゲットし、それを元に戻すことでした(4.5.1を使用して4.5に変更し、元に戻しました)

この後、私も使用しているT4MVCで多くのエラーが発生しましたが、最新バージョンにアップグレードしましたが、ソース管理でT4MVCがフレームワーク4.5を対象にインストールされ、新しいnugetパッケージを再インストールすると変更されることがわかりましたターゲットフレームワーク、したがって4.5.1に変更されました

この後、すべてが機能しました。この回答の2番目の部分だけを行う必要があるかどうかはテストしませんでしたが、最初にそれを試します。

1
Jim Wolff

ソリューションプロジェクトを右クリックして、クリーンをクリックします。私はそれをやったが、それはDID私のために働く。私がそれを助けてくれる誰かがそれを助けてくれるかどうかを知っているので、私はこれを共有している。

1
Af'faq

WebプロジェクトにMicrosoft.CodeDom.Providers.DotNetCompilerPlatformをインストールし、パッケージを削除しました。エラーはなくなりました。

0
spine4iller

このエラーを解決する方法は、コードにGlobal.asax.csをStartup.csに移動し、Global.asaxを削除して、プロジェクトに分離コードファイルがないようにすることでした。詳しくは この質問 をご覧ください。

0
rfoster