Развертывание веб-сайта: 500 - Внутренняя ошибка сервера


189

Я пытаюсь развернуть приложение ASP.NET. Я развернул сайт в IIS, но при посещении его с помощью браузера он показывает мне следующее:

Ошибка сервера

внутренняя ошибка сервера 500.

Возникла проблема с ресурсом, который вы ищете, и он не может быть отображен.

После возни с web.config я получил:

Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера.

Как я могу увидеть фактическую проблему за этой ошибкой сервера?


1
Убедитесь, что у вас есть подстановочный знак для каталога MVC в каталоге ...
sajoshi

Ответы:


298

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

С подробной ошибкой вы можете найти реальную проблему здесь.

Кроме того, если вы можете запустить браузер на сервере , вы получите подробную информацию об ошибке, поскольку сервер распознает, что вы локальный, и покажет ее вам. Или, если вы можете прочитать журнал сервера с помощью средства просмотра событий, вы также увидите подробности вашей ошибки.

На IIS 6

<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

На IIS 7

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

Примечание: вы можете избежать Debug = true . Вам нужно только на некоторое время закрыть пользовательские ошибки и получить подробную страницу об ошибках.

Справка: Включение Windows , пользовательских сообщений об ошибках в Go Daddy в справочных статьях.

Также это может помочь: Как включить подробные сообщения об ошибках (из IIS).


9
Спасибо за пост! Часть, которая сделала это для меня, была: <httpErrors errorMode = "Detail" />
jaseeey

@codemonkeyliketab Должен быть таким же ... или похожим ... если вы запускаете iis express на вашем компьютере, откройте EventViewer ...
Aristos

4
run the browser on the serverработал для меня .. спасибо брат
Раджшекар Редди

1
@ Узнав, что да, вы включаете - вы включаете детальную ошибку только на короткий промежуток времени, чтобы найти некоторые из ваших ошибок и запустить приложение, а затем закрываете его снова
Aristos

1
Спасибо, помогло включить подробные сообщения об ошибках из IIS.
Вадим Тофан

25

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

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

Помните, что вы должны добавить это к существующим элементам XML , если они уже есть. Вы не можете просто добавить в конец файла, потому что вы не можете иметь несколько копий любого элемента.


9

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

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>

1
Спасибо .. сработало для меня, но нужен ли этот mimeMap для показа видео?
Панки Шарма

9

Я наконец-то решил эту ошибку «500 Внутренний сервер» при развертывании приложения ASP.NET MVC 3.0 на виртуальном хостинге godaddy.ocm.

каким-то образом были несоответствия между версией файлов DLL, на которые ссылаются, и версией, упомянутой в файле web.config .

Я перепробовал все варианты, упомянутые на разных форумах. Ничего не помогло, хотя все предлагали одно и то же исправление, но почему-то это не сработало в моем сценарии. Наконец, после двух дней стук в голову. Я решил удалить все ссылки на DLL-файлы и удалить web.cofig (сделать локальную копию) из проекта и позволить приложению выдать ошибку, а затем добавить файлы DLL по одному, делая копию в local = true.

После добавления всех файлов DLL я создал новое приложение ASP.NET MVC и скопировал файл web.config нового приложения в мое реальное приложение. Таким образом, мое реальное приложение теперь имеет новый web.config, а затем я скопировал строку подключения и другие ссылки из локальной копии web.config, которую я сохранил.

Я только что скомпилировал приложение и опубликовал его в локальной папке, а FTP опубликовал папку на goDaddy.

Это сработало и наконец моя проблема была решена.


Моя ошибка решена с помощью: stackoverflow.com/questions/11359957/… Также пришлось установить Elmah
Per G

7

В моем случае я поместил ошибку в мой web.configфайл. Ключ приложения каким-то образом был помещен под тегом <appSettings>. Но мне интересно, почему он не отображает ошибку конфигурации. Ошибка 500 слишком общая для исследования проблемы.


Просто было то же самое здесь. Файл web.config был скопирован по ошибке в подкаталог, что вызвало ошибочную ошибку, хотя я установил для параметра «Показать подробные ошибки» значение true.
Авни Яин

7

Моя первая попытка опубликовать, а затем запустить очень простой сайт, содержащий только созданный HTML-код: «Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера».

Проблема: у меня был установлен сайт .NET 3.5 в Visual Studio (щелкните правой кнопкой мыши проект веб-сайта -> Страницы свойств -> Построить), но веб-сайт в Azure был настроен как .NET 4.0. К сожалению! Я изменил его на 3,5 в Azure, и это сработало.


5

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

<httpErrors existingResponse="Replace" />
                              ^^^^^^^ not going to work with this here

4

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


3

Ошибка сервера 500 - внутренняя ошибка сервера. Возникла проблема с ресурсом, который вы ищете, и он не может быть отображен. Goddady. Хостинг - Веб - Экономика - Windows Plesk

В моем случае я заменяю этот код:

<configuration> 
  <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true"/> 
  </system.webServer> 
  <system.web> 
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web> 
</configuration>

Затем измените Framework 3.5 на Framework 4. Это показывает мою подробную ошибку. Я удаляю код в:

<httpModules></httpModules>

Это решило мою проблему.


3

Для IIS 8 Существует дополнительный шаг, кроме изменения customErrors = Off для отображения содержимого ошибки.

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

Рауль ответил на вопрос по этой ссылке Отключить пользовательские ошибки IIS8 от Рауля


Вы пропустили закрытие / после «Подробно»
manuel-84

Это решение было тем, что было необходимо для IIS 10.0.14393.0.
Маркус Парсонс

2

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

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <clear/>
            <add namespace="System"/>
            <add namespace="System.Collections"/>
            <add namespace="System.Collections.Specialized"/>
            <add namespace="System.Configuration"/>
            <add namespace="System.Text"/>
            <add namespace="System.Text.RegularExpressions"/>
            <add namespace="System.Web"/>
            <add namespace="System.Web.Caching"/>
            <add namespace="System.Web.SessionState"/>
            <add namespace="System.Web.Security"/>
            <add namespace="System.Web.Profile"/>
            <add namespace="System.Web.UI"/>
            <add namespace="System.Web.UI.WebControls"/>
            <add namespace="System.Web.UI.WebControls.WebParts"/>
            <add namespace="System.Web.UI.HtmlControls"/>
        </namespaces>
    </pages>
    <authentication mode="None"/>
</system.web>

2

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

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

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


Разве этот ответ не совпадает с ответом от июля 2014 года ?
Вай Ха Ли

1

500 Внутренняя ошибка
Windows Hosting Ошибка

Godaddy Hosting проблема

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

Я также рекомендую всем вам внести любые изменения, которые вы хотите внести в свой файл 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>

в моем случае ошибка была вызвана <httpRuntime enableVersionHeader = "false" /> в web.config
b3wii

1

Если вы используете собственный 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.


1

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


Срок действия этой регистрации домена истек 15/06/2018.
Патриция

Ссылка теперь обслуживает вредоносное ПО. Я удалил ссылку
Liam

0

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

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

Добавьте следующие сборки в ваш проект и установите для параметра Копировать локально значение True:

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
Publish your application.

0

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

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


0

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

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

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


0

Если вы используете IIS 8.5, может потребоваться изменить настройку идентификатора ApplicationPool с ApplicationPoolId на NetworkService

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

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


0

Прежде чем изменить web.configфайл, я бы проверил, что .NET Frameworkверсия, которую вы используете, точно (я имею в виду, 4.5! = 4.5.2) такая же, как ваши GoDaddyнастройки (настройки ASP.Net в вашей 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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.