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を使用しています(重要な場合に備えて)
さらに調査した結果、これは既知の問題であることがわかりました。
ソース: 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ベースのプロバイダーに置き換えます。
同じ問題がありました。
生成されたファイルfile.cshtml.72cecc2a.cs
(AppData\Local\Temp\Temporary ASP.NET Files\root
にあります)を手動で編集し、ASP.global_asax
をSystem.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));
}
}
なぜこれが起こっているのか分かりません。
ビルドを実行するときにApp_Code
のファイルをVisual Studio 2015で開いていると、エラーが発生しないことがわかりました。ファイルを閉じると、エラーが再び表示されます。
ここで提案されているさまざまなソリューションを試した後、単にVisual Studio 2015を終了して再起動するだけで、ソリューション/プロジェクトをもう一度正常にコンパイルできるようになりました。
これを解決するために私がやった2つのことは、フレームワークを再ターゲットし、それを元に戻すことでした(4.5.1を使用して4.5に変更し、元に戻しました)
この後、私も使用しているT4MVCで多くのエラーが発生しましたが、最新バージョンにアップグレードしましたが、ソース管理でT4MVCがフレームワーク4.5を対象にインストールされ、新しいnugetパッケージを再インストールすると変更されることがわかりましたターゲットフレームワーク、したがって4.5.1に変更されました
この後、すべてが機能しました。この回答の2番目の部分だけを行う必要があるかどうかはテストしませんでしたが、最初にそれを試します。
ソリューションプロジェクトを右クリックして、クリーンをクリックします。私はそれをやったが、それはDID私のために働く。私がそれを助けてくれる誰かがそれを助けてくれるかどうかを知っているので、私はこれを共有している。
WebプロジェクトにMicrosoft.CodeDom.Providers.DotNetCompilerPlatformをインストールし、パッケージを削除しました。エラーはなくなりました。
このエラーを解決する方法は、コードにGlobal.asax.csをStartup.csに移動し、Global.asaxを削除して、プロジェクトに分離コードファイルがないようにすることでした。詳しくは この質問 をご覧ください。