Платформа.NET 4 RTM на Windows server 2008 R2

Я только что установил.NET 4 на Windows Server 2008 R2 x64, и я получаю 500 Внутренних Ошибок Сервера с приложением MVC ASP.NET, которое ранее хорошо работало на 3,5. Приложение было обновлено от предназначения 3.5 для предназначения 4, и я лично создал его сегодня на моей машине разработки (измененный в VS - Свойства к Платформе.NET 4).

На сервере я установил Платформу.NET 4 Клиентских профиля и Полный оба автоматически через Установщик Веб-платформы. ASP.NET MVC 2 был также установлен через Установщик Платформы. Я создал новую.NET 4 пула приложений в IIS и поместил веб-приложение в него.

Также мне выключили пользовательские ошибки в web.config, но несмотря на это никакая подробная ошибка не отображена - просто простой IIS 7.5 500 Внутренняя Ошибка Сервера.

Какие-либо предложения?

5
задан mare 21 April 2010 в 09:35
поделиться

4 ответа

Что ж, это очень странная и интересная проблема .. Но я очень хочу помочь, чем могу. Я в настоящее время у меня есть VPS с Server 2008 R2, и я установил на нем .NET 4 RTM и MVC 2.Не думаю, что я столкнулся с проблемами конфигурации, но мне пришлось помочь настроить его другим людям ..

Сначала не могли бы вы проверить .. в вашем диспетчере IIS, ограничения Isapi и Cgi, есть ли у вас .NET 4 там? Какие версии? они включены?

Если вы перейдете к своим пулам приложений в IIS, поддерживаются ли ваши пулы приложений для .NET 4, НОВОЙ версии? Дважды проверьте это, ваши пулы приложений могут быть настроены на другую сборку платформы .NET 4, которая с тех пор была удалена / отключена. Вы можете попробовать создать НОВЫЙ веб-сайт с новым чистым пулом приложений, чтобы проверить, работает ли он.

Если ничего не работает, вы можете попробовать повторно зарегистрировать .NET в IIS с помощью aspnet_regiis -i

Если ничего из этого не сработает, я постараюсь вернуться с еще несколькими вариантами / идеями

6
ответ дан 13 December 2019 в 22:06
поделиться

Обычно я решаю такие проблемы, переустанавливая файлы поддержки ASP.NET на IIS.

  1. Откройте командную строку с правами администратора (Командная строка, щелкните правой кнопкой мыши, Запуск от имени администратора)
  2. Введите:

    cd% WINDIR% \ Microsoft.NET \ Framework64 \ v4.0.XX.XX

    aspnet_regiis -i

Готово. Возможно, вам потребуется открыть IIS и переназначить пулы приложений только что созданному «интегрированному ASP.NET 4.0» (или классическому).

4
ответ дан 13 December 2019 в 22:06
поделиться

У меня также есть небольшие проблемы совместимости с моим приложением ASP.NET MVC. Может быть, у вас такая же проблема.

Я использовал NoSessionControllerFactory для отключения SessionState на основе Как отключить состояние сеанса в ASP.NET MVC? и http://billrob.com/archive/2009 /07/15/asp-net-mvc-without-sessionstate.aspx . После обновления до .NET 4.0 мое приложение не работало. Я получил также 500 Internal Server Error. После небольшой модификации NoSessionControllerFactory из Global.asax.cs мир был в порядке. Фиксированный код выглядит следующим образом:

public class NoSessionControllerFactory: DefaultControllerFactory {
    protected override IController GetControllerInstance (RequestContext requestContext, Type controllerType) {
        if (controllerType != null) {
            var controller = base.GetControllerInstance (requestContext, controllerType);
            ((Controller)controller).TempDataProvider =
                new DummyTempDataProvider ();
            return controller;
        }
        else
            return null;
    }
}
public class DummyTempDataProvider: ITempDataProvider {
    public IDictionary<string, object> LoadTempData (ControllerContext controllerContext) {
        return new Dictionary<string, object> ();
    }
    public void SaveTempData (ControllerContext controllerContext,
        IDictionary<string, object> values) {
    }
}

Класс будет использоваться внутри Global.asax.cs , например:

protected void Application_Start () {
    RegisterRoutes (RouteTable.Routes);

    // see https://stackoverflow.com/questions/884852/how-can-i-disable-session-state-in-asp-net-mvc
    ControllerBuilder.Current.SetControllerFactory (new NoSessionControllerFactory ());
}
0
ответ дан 13 December 2019 в 22:06
поделиться

Готов поспорить, что это проблема конфигурации рассматриваемого приложения. Конфигурация ASP.NET 4 отличается от конфигурации 3.5.

Также убедитесь, что ваше веб-приложение ссылается на библиотеки DLL из .NET 4, а не .NET 3.5.

0
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: