Развертывание веб-сайта: 500-Внутренняя ошибка сервера
Я пытаюсь развернуть ASP.NET применение. Я развернул сайт в IIS, но при посещении его с помощью браузера он показывает мне следующее:
Ошибка Сервера
500 - Внутренняя ошибка сервера.
есть проблема с ресурса, который вы ищете, и он не может быть отображен.
после возиться с паутиной.конфиг, я сейчас получу:
страница не может быть отображена, потому что произошла внутренняя ошибка сервера.
Как я могу увидеть фактическую проблему за этой ошибкой сервера?
20 ответов:
первый, вам нужно включить и посмотреть подробные ошибки веб-сообщения, поскольку это сообщение не дает информации о том, что на самом деле происходит по соображениям безопасности.
С подробной ошибкой, вы можете найти реальную проблему здесь.
также, если вы можете Запустите браузер на сервере, вы получаете подробную информацию об ошибке, потому что сервер распознает, что вы локальны и показывает его вам. или если вы можете прочитать журнал сервера с помощью средства просмотра событий можно также увидеть подробности ошибки.
On 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 на иди к папочке помогите статьи.
кроме того, это может помочь: Как включить подробные сообщения об ошибках (через IIS).
я вытаскивал свои волосы из-за этого вопроса. Убедитесь, что следующая запись была в корне
web.configфайл исправил это для меня:<configuration> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> </system.webServer> </configuration>помните, что вы должны добавить это к существующему XML элементы, если они уже есть. Вы не можете просто добавить в конце файла, потому что вы не можете иметь несколько копий любого элемента.
Я, наконец, решил эту ошибку "500 внутренний сервер" при развертывании ASP.NET приложение MVC 3.0 на godaddy.ОСМ хостинга.
каким-то образом были расхождения в версии DLL-файлов, на которые ссылаются, и версии, упомянутой в файле
web.config.я попробовал все варианты, упомянутые в различных форумах. Ничего не помогло, хотя все предлагали одно и то же исправление, но почему-то это не сработало в моем сценарии. Наконец, после того, как ударился головой в течение двух дней. Я решил чтобы удалить все ссылки на файлы DLL и удалить веб.cofig (сделать локальную копию) из проекта и пусть приложение выдает ошибку, а затем добавить DLL-файлы по одному, делая копию в local=true.
после того, как все DLL файлы были добавлены, я создал новый ASP.NET приложение MVC и скопировал веб.конфигурация нового приложения для моего фактического приложения. Так что мое фактическое приложение теперь имеет новый веб.config, а затем я скопировал connectionstring и другие ссылки из локальной копии сеть.конфигурация, которую я сохранил.
Я просто скомпилировал приложение и опубликовал его в локальной папке и FTP опубликованную папку в goDaddy.
Он работал, и, наконец, моя проблема была решена.
для меня следующий код в web.конфиг был виновником. Когда я удалил его, веб-сайт работал нормально.
<staticContent> <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> </staticContent>
в моем случае, я поставил ошибку в моем . Ключ приложения каким-то образом был помещен под тег
. Но мне интересно, почему он не отображает ошибку конфигурации. Ошибка 500 является слишком общей для исследования проблемы.
моя первая попытка опубликовать, а затем запустить очень простой сайт, обслуживающий только HTML-код "страница не может быть отображена, потому что произошла внутренняя ошибка сервера."
проблема: у меня был сайт, установленный в .NET 3.5 в Visual Studio (щелкните правой кнопкой мыши проект веб-сайта - > страницы свойств - > сборка), но веб-сайт в Azure настроен как .NET 4.0. Ой! Я изменил его на 3.5 в Azure, и это сработало.
IIS также сообщает код состояния 500 без каких-либо подсказок журнала событий, если нет достаточных разрешений на физический домашний каталог (т. е. IIS_IUSRS не имеет доступа).
наверное веб.файл конфигурации неверен или отсутствует какой-либо тег. Я решил свою проблему, используя правильные теги конфигурации для.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>
Я понял, что разрешения для файлов и папок на вашем сервере тоже дело. Я загрузил свои файлы из операционной системы linux, и обычно разрешения ограничены для чтения и записи. Поэтому при загрузке разрешение остается таким же, как и на локальной машине.
У меня была та же ошибка, и я просто изменил разрешения для папки, которую я загрузил, и ошибка исчезла.
надеюсь, что это поможет кому-то.
500 внутренняя ошибка сервера может возникнуть по нескольким причинам. Первой причиной может быть эта сеть.файл конфигурации не создан должным образом, означает, что вы пропустили какой-то тег в интернете.конфигурационный файл. Во-вторых, эта ошибка может быть связана с некоторой проблемой кода. Чтобы проверить, какой компонент веб-приложения вызывает эту ошибку, можно проверить параметр приложения в web.конфигурационный файл. Подробности решения и отслеживания 500 внутренних ошибок сервера с диаграммой приведены здесь:
ошибка сервера 500 - Внутренняя ошибка сервера. Есть проблема с ресурса, который вы ищете, и он не может быть отображен. Черт возьми. Хостинг-Web-Экономика-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>затем измените фреймворк 3.5 на фреймворк 4. Это показывает мою подробную ошибку. Я удаляю код в:
<httpModules></httpModules>это решило мою проблему.
500 Внутренняя Ошибка
Windows Хостинг Ошибка
Godaddy хостинг вопрося столкнулся с той же проблемой, но теперь моя проблема была решена. Всегда используйте в этом хостинге это работает.
Я также рекомендую вам всем делать любые изменения, которые вы хотите сделать в своем интернете.конфигурационный файл. Пожалуйста, сделайте это один за другим и протестируйте то же самое на реальном домене, чтобы вы могли найти точную проблему или функции что ваш хостинг-провайдер не позволяет использовать.
<?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>
убедитесь, что ваша учетная запись использует IIS 7. Дополнительные сведения см. В разделе Настройка параметров IIS в учетной записи хостинга Windows. Следуйте инструкциям в разделе изменение режима конвейера в учетной записи хостинга Windows IIS 7. Выберите Режим Интегрированного Конвейера. В разделе Ссылки на проект установите для параметра копировать локально значение True для следующих сборок:
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.
Иногда, причиной может быть один из ваших .сборки DLL не зарегистрирован на сервере.
например, вы можете успешно запустить веб-приложение c# Excel на локальном компьютере с установленным Office, получая ошибку 500 при развертывании сервера, потому что на сервере не установлен пакет Office, и таким образом вы получаете ошибку сервера.
для тех, кто имеет такую возможность (VPS хостинг не хостинг):
подключение к хост-серверу через удаленный рабочий стол. Откройте веб-браузер с удаленного рабочего стола, и вы увидите подробное описание ошибки.
вам не нужно изменять веб.config или предоставить какие-либо детали кому-либо еще.
если вы используете пользовательский 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.
Если вы используете IIS 8.5, возможно, вам нужно изменить параметр идентификатора ApplicationPool с ApplicationPoolId до NetworkService
щелкните правой кнопкой мыши пул приложений в вопросе, нажмите на кнопку "Дополнительные Настройки", а затем прокрутите вниз до ID - он, вероятно, будет установлен в ApplicationPoolIdentity. Нажмите на кнопку (..) и выберите NetworkService из выпадающего списка вместо.
также убедитесь, что если это приложение .NET 2.0, вы не ссылаетесь на платформу 4.0 в пуле приложений.
для IIS 8
<system.web> <customErrors mode="Off" /> </system.web> <system.webServer> <httpErrors existingResponse="PassThrough" errorMode="Detailed"> </system.webServer>
перед
web.configфайл, я бы проверил, что.NET Frameworkверсия, которую вы используете-это точно (я имею в виду, 4.5 != 4.5.2) по сравнению с вашей!--2-- > настройки (ASP.Net настройки в вашемPlesk panel). Это должно автоматически изменить ваш веб.конфигурационный файл для правильной структуры.
Также обратите внимание, что на данный момент (Январь '16),GoDaddyработает сASP.Net 3.5и4.5.2. Использовать4.5.2С Visual Studio это должно быть2012или новее, и если не 2015, то вы должны загрузите и установите пакет разработчика .NET Framework 4.5.2.
Если все еще не работает, то да, ваш следующий шаг должен включать подробную отчетность об ошибках, чтобы вы могли ее отладить.
Comments