Розгортання веб-сайту: 500 - Внутрішня помилка сервера


189

Я намагаюся розгорнути додаток ASP.NET. Я розгорнув сайт у IIS, але, відвідуючи його за допомогою браузера, він показує мені таке:

помилка серверу

500 Внутрішня помилка сервера.

Виникла проблема з ресурсом, який ви шукаєте, і він не може бути відображений.

Після знайомства з web.config, я отримав:

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

Як я можу побачити фактичну проблему за цією помилкою сервера?


1
Переконайтеся, що у каталозі встановлено
картографічне підключення

Відповіді:


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>

Примітка: Ви можете уникнути налагодження = true . Вам потрібно лише на деякий час закрити власні помилки та отримати детальну сторінку помилок.

Довідка. Увімкнення спеціальних повідомлень про помилки Windows у статтях довідки Go Daddy .

Також це може допомогти: Як увімкнути детальні повідомлення про помилки (від IIS).


9
Дякую за пост! Частина, яка зробила це для мене, була: <httpErrors errorMode = "Детально" />
jaseeey

@codemonkeyliketab Мабуть , те ж саме ... або подібні ... якщо запустити IIS Express на вашому комп'ютері , відкрийте EventViewer ...
аристократ

4
run the browser on the serverпрацював на мене .. дякую брат
Раджешекар Редді

1
@ Навчання так, ви є - ви вмикаєте детальну помилку лише за короткий проміжок часу, щоб можна було знайти деякі свої помилки і змусити ваш додаток працювати - тоді ви закриєте його назад
Арістос

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 для показу відео?
panky

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, і тоді я скопіював stringstring та інші посилання з локальної копії web.config, яку я зберег.

Я просто скомпілював додаток і опублікував у локальній папці та FTP опубліковану папку goDaddy.

Це спрацювало і нарешті моя проблема була вирішена.


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

7

У моєму випадку я помістив помилку у своєму web.configфайлі. Ключ програми якось було поміщено під тег <appSettings>. Але мені цікаво, чому він не відображає помилку конфігурації. Помилка 500 занадто загальна для дослідження проблеми.


Просто тут було те саме. web.config було скопійовано помилково в підкаталог і викликало помилкову помилку, хоча я встановив значення "показати детальні помилки".
Avni Yayin

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>

Raul відповів на питання в цьому посиланні Вимкніть спеціальні помилки IIS8 від Raul


ви пропустили закриття / після "Детально"
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 Error

Проблема хостингу 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>

у моєму випадку помилка була спричинена <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.
Патрісія

Зараз посилання подає зловмисне програмне забезпечення. Я видалив посилання
Ліам

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 Suite, і, таким чином, ви отримуєте помилку на сервері.


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.