Подтвердить что ты не робот

"ASP.global_asax не существует в пространстве имен ASP"

Я создал файл RazorFunctions.cshtml на App_Code

@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 (на всякий случай это важно)

4b9b3361

Ответ 1

После дальнейшего исследования я обнаружил, что это известная проблема.

источник: https://support.microsoft.com/en-us/kb/3025133

ASP.NET и веб-разработка

  • При создании веб-форм 4.5 WAP и открытии страницы веб-формы вы получаете следующие ошибки в окне "Список ошибок":

  • Проект будет работать без каких-либо проблем. Ошибка CS0234 Тип или имя пространства имен "global_asax" не существует в пространстве имен "ASP" (вам не хватает ссылки на сборку?) Ошибка CS0234 Тип или имя пространства имен "Linq" не существует в пространстве имен "Система" (вам не хватает ссылки на сборку?) Предположим, что вы используете новые языковые возможности для С# и VB в Visual Studio 2015 RC. Вы получаете ошибку времени выполнения при использовании С# или VB на странице веб-формы или в представлениях Razor.

Чтобы обойти эту проблему, установите пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet. Этот пакет заменит поставщика на основе Roslyn для поставщиков CodeDom в ящике для ASP.NET.

Ответ 2

У меня была такая же проблема.

Я вручную отредактировал сгенерированный файл 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));
    }
}

Я не знаю, почему это происходит.

Ответ 3

Я обнаружил, что если у меня есть файлы в App_Code в Visual Studio 2015, когда я запускаю сборку, то я не получаю ошибки. Как только я закрываю файлы, ошибки появляются снова.

Ответ 4

Попробовав множество предлагаемых здесь решений, выясняется, что просто выйти из Visual Studio 2015 и перезапустить его было достаточно, чтобы еще раз успешно выполнить компиляцию Solution/Project.

Ответ 5

Две вещи, которые я сделал, чтобы разрешить это, - это переназначить фреймворк и затем изменить его (использовав 4.5.1, изменил его на 4.5 и обратно).

После этого у меня было много ошибок с T4MVC, которые я также использовал, я обновил его до самой новой версии, но я мог видеть, что в исходном управлении T4MVC была установлена ​​таргетинг Framework 4.5 и когда вы повторно устанавливаете новый пакет nuget он изменяет целевую структуру, поэтому она была изменена на 4.5.1

После этого все сработало. Я не тестировал, если вам нужно только сделать эту вторую часть этого ответа, но я бы попробовал это в первую очередь.

Ответ 6

Способ, которым я решил эту ошибку, состоял в том, чтобы переместить мою форму кода Global.asax.cs в Startup.cs и удалить Global.asax, чтобы в моем проекте не было файлов кода. См. этот вопрос для получения дополнительной информации.

Ответ 7

Я установил Microsoft.CodeDom.Providers.DotNetCompilerPlatform для моего веб-проекта, а затем удалил пакет. Ошибка исчезла.

Ответ 8

Код, размещенный в папке App_Code, обрабатывается немного иначе, он компилируется во время выполнения. Файл cshtml - это "Содержимое", поэтому это может стать причиной возникновения ошибок. Создайте нормальную папку внутри своего имени проекта, это код или что-то подобное (но не App_Code) и разместите там файл.