О развертывании веб-приложений ASP.NET MVC3 в IIS Windows Server 2016 [дубликат]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
162
задан Aristos 9 January 2014 в 17:42
поделиться

14 ответов

Иногда причина может быть одной из ваших сборников .dll, не зарегистрирована на сервере правильно.

Например, вы можете успешно запустить веб-приложение C # Excel на своем локальном компьютере с установленным Office, при получении 500 ошибок при развертывании сервера, поскольку на сервере не установлен пакет Office, и, следовательно, вы получаете ошибку сервера.

247
ответ дан Peter Mortensen 19 August 2018 в 01:55
поделиться
  • 1
    Моя ошибка решена: stackoverflow.com/questions/11359957/… Также пришлось установить Elmah – Per G 26 June 2013 в 14:19
  • 2
    Спасибо за сообщение! Часть, которая сделала это для меня, была: & lt; httpErrors errorMode = & quot; Подробно & quot; / & GT; – Jason Ilicic 10 November 2014 в 08:06
  • 3
    меня тоже: & lt; httpErrors errorMode = & quot; Детальный & quot; / & GT; – k4st0r42 6 May 2015 в 07:37
  • 4
    вы можете обновить для IISexpress? – codemonkeyliketab 24 May 2016 в 17:18
  • 5
    run the browser on the server работал для меня .. спасибо брат – Rajshekar Reddy 14 November 2016 в 08:56
  • 6
    @Learning да есть - вы включите подробные ошибки только на короткий период времени, чтобы найти некоторые из ваших ошибок и сделать приложение работает - тогда вы закрываете его обратно – Aristos 3 August 2017 в 14:56
  • 7
    Просто здесь было то же самое. web.config был скопирован по ошибке в подкаталог и вызвал неверный перевод, хотя я установил «показать подробные ошибки», к истине. – Avni Yayin 25 July 2018 в 15:19
253
ответ дан Peter Mortensen 30 October 2018 в 13:32
поделиться

500 Внутренняя ошибка Ошибка хостинга Windows Ошибка Godaddy Хостинг

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

Я также рекомендую всем сделать все изменения, которые вы хотите внести в свой файл web.config. Пожалуйста, сделайте это один за другим и протестируйте их на живом домене, чтобы вы могли найти точную проблему или функции, которые ваш хостинг-провайдер не позволяет вам использовать.

<?xml version="1.0"?>

<configuration>
    <system.web>
        <trust level="Medium"/>
        <compilation debug="true" targetFramework="4.5">
            <assemblies>
                <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            </assemblies>
        </compilation>

        <httpRuntime targetFramework="4.5" />
        <sessionState mode="InProc" cookieless="false" timeout="90" />
        <authentication mode="Forms">
            <forms loginUrl="default.aspx"  
                   defaultUrl="default.aspx"
                   protection="All"
                   cookieless="UseCookies"
                   slidingExpiration="false"
                   timeout="30"
                   name="aeon.corpusjuris.in" />
        </authentication>

        <customErrors 
            mode="Off" 
            defaultRedirect="errorpage.aspx">

            <error statusCode="403" redirect="errorpage.aspx"/>
            <error statusCode="404" redirect="errorpage.aspx"/>
        </customErrors>

        <!--  <httpModules>
                <add name="HTTPCaching" type="HTTPCaching"/>
            </httpModules>
        -->
    </system.web>

    <runtime>
        <performanceScenario value="HighDensityWebHosting"  />
    </runtime>

    <system.webServer>
        <!--  <modules runAllManagedModulesForAllRequests="true">
                <add name="HTTPCaching" type="HTTPCaching"/>
            </modules>
        -->

        <defaultDocument>
            <files>
                <clear />
                <add value="default.aspx" />
            </files>
        </defaultDocument>

        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>

        <staticContent>
            <clientCache cacheControlCustom="public"
                         cacheControlMaxAge="60:00:00"
                         cacheControlMode="UseMaxAge" />
        </staticContent>
    </system.webServer>

    <system.web.extensions>
         <scripting>
             <webServices>
                 <jsonSerialization maxJsonLength="90000000">
                 </jsonSerialization>
             </webServices>
         </scripting>
    </system.web.extensions>

</configuration>
1
ответ дан 2 revs, 2 users 64% 19 August 2018 в 01:55
поделиться
  • 1
    в моем случае ошибка была вызвана & lt; httpRuntime enableVersionHeader = "false" / & GT; в web.config – b3wii 4 December 2017 в 17:01

Для IIS 8

<system.web>
   <customErrors mode="Off" />
</system.web>
<system.webServer>
   <httpErrors existingResponse="PassThrough" errorMode="Detailed">
</system.webServer>

Отключите пользовательские ошибки IIS8 от Raul

0
ответ дан Aviva 19 August 2018 в 01:55
поделиться

В дополнение к другим предложениям не забудьте изменить атрибут existingResponse узла httpErrors на Auto из Replace или полностью удалить это свойство.

<httpErrors existingResponse="Replace" />
                              ^^^^^^^ not going to work with this here
4
ответ дан ErikE 19 August 2018 в 01:55
поделиться

Убедитесь, что ваша учетная запись использует IIS 7. Дополнительные сведения см. в разделе Настройка параметров IIS в учетной записи хостинга Windows. Следуйте инструкциям в разделе «Изменение режима трубопровода» на учетной записи хостинга Windows IIS 7. Выберите «Интегрированный режим трубопровода». В разделе «Ссылки на проекты» установите для параметра «Копировать локальное» значение «Истина» для следующих сборок:

System.Web.Abstractions
System.Web.Helpers
System.Web.Routing
System.Web.Mvc
System.Web.WebPages

Добавьте в свой проект следующие сборки, а затем установите «Копировать локальное» в «Истинный»:

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
Publish your application.
0
ответ дан Kurkula 19 August 2018 в 01:55
поделиться

IIS также сообщает код состояния 500 без подсказок журнала событий, если в физическом домашнем каталоге недостаточно разрешений (т. е. IIS_IUSRS не имеет доступа).

3
ответ дан lapsus 19 August 2018 в 01:55
поделиться

Ошибка внутреннего сервера 500 может возникнуть по нескольким причинам. Первая причина может заключаться в том, что файл web.config не создан должным образом, означает, что вы пропустили какой-либо тэг в файле web.config. Во-вторых, эта ошибка может быть вызвана некоторой проблемой кода. Чтобы проверить, какой компонент веб-приложения вызывает эту ошибку, вы можете проверить настройку приложения в файле web.config. Подробное описание и устранение ошибки внутреннего сервера 500 с диаграммой приведено здесь:

Решить 500 внутренних серверов из IIS.

1
ответ дан Manish 19 August 2018 в 01:55
поделиться
  • 1
    Эта регистрация домена истекла на 06/15/2018. – Patricia 26 June 2018 в 20:14

Я понял, что разрешения для файлов и папок на вашем сервере также имеют значение. Я загрузил свои файлы из операционной системы Linux, и, как правило, разрешения ограничены для чтения и записи. Поэтому при загрузке разрешение остается таким же, как на локальном компьютере.

У меня была такая же ошибка, и я просто изменил разрешения для папки, которую я загрузил, и ошибка исчезла.

Надеюсь, что это кому-то поможет.

2
ответ дан mark kasina 19 August 2018 в 01:55
поделиться

Если вы используете пользовательский HttpHandler (т. е. реализуете IHttpModule), убедитесь, что вы проверяете вызовы на его метод Error.

Вы могли бы обработать ваш обработчик фактическим HttpExceptions (которые имеют полезное свойство Message) во время локальной отладки, например:

    public void Error(object sender, EventArgs e)
    {
        if (!HttpContext.Current.Request.IsLocal)
            return;
        var ex = ((HttpApplication)sender).Server.GetLastError();
        if (ex.GetType() == typeof(HttpException))
            throw ex;
    }

Также убедитесь, что вы проверяете Исключение InnerException.

0
ответ дан Protector one 19 August 2018 в 01:55
поделиться

Для тех, у кого есть такая возможность (VPS-хостинг, а не веб-хостинг):

Подключитесь к вашему серверу хостинга через Remote Desktop. Откройте веб-браузер с удаленного рабочего стола, и вы увидите подробное описание ошибки.

Вам не нужно изменять web.config или предоставлять какие-либо подробности кому-либо еще.

0
ответ дан qub1n 19 August 2018 в 01:55
поделиться

Прежде чем сменить файл web.config, я хотел бы проверить, что версия .NET Framework, которую вы используете, в точности (я имею в виду, 4.5! = 4.5.2) по сравнению с вашими настройками GoDaddy (ASP. Чистые настройки в вашем Plesk panel). Это должно автоматически изменить ваш файл web.config на правильную структуру. Также обратите внимание, что на данный момент (январь -16), GoDaddy работает с ASP.Net 3.5 и 4.5.2. Чтобы использовать 4.5.2 с Visual Studio, он должен быть 2012 или новее, а если не 2015, вы должны загрузить и установить пакет разработчика .NET Framework 4.5.2. Если все еще не работает, то да, ваш следующий шаг должен включать подробные отчеты об ошибках, чтобы вы могли его отлаживать.

0
ответ дан Sergio R 19 August 2018 в 01:55
поделиться

Если вы используете IIS 8.5, возможно, вам нужно изменить параметр ApplicationPool ID из ApplicationPoolId в NetworkService

Щелкните правой кнопкой мыши на пуле приложений, нажмите «Дополнительные настройки», а затем прокрутите вниз для ID - вероятно, он будет установлен в ApplicationPoolIdentity. Нажмите кнопку (..) и выберите NetworkService из выпадающего списка.

Также убедитесь, что если это приложение .NET 2.0, вы не ссылаетесь на фреймворк 4.0 в своем пуле приложений.

0
ответ дан Steve Woods 19 August 2018 в 01:55
поделиться

Для меня следующий код в web.config был виновником. Когда я удалил его, веб-сайт работал нормально.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
6
ответ дан user3638709 19 August 2018 в 01:55
поделиться
Другие вопросы по тегам:

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