Текущий проект:Web.Config может быть «нечитаемые»
- ASP.NET 4.5.2
- MVC 5
Я имею довольно странный вопрос. Когда я отлаживаюсь из VS2015, я могу использовать и взаимодействовать с сайтом без каких-либо проблем, однако каждый раз, когда я хочу что-то проверить, отлаживая, требуется много времени для компиляции. Кроме того, после начала отладки файлы блокируются и не могут быть отредактированы; и когда я прекращаю отладку внутренних IIS для сбоев VS (это для любого сайта, с которым я работаю, а не только этого). Поэтому использование внутреннего IIS для VS2015 невозможно, не находясь в режиме отладки.
Когда я прикрепляю локальную установку IIS Express к каталогу, в котором находятся файлы проекта, или к каталогу, из которого скомпилирован скомпилированный проект, сайт работает только с обычными страницами. Любые действия, связанные с запросами базы данных, терпят неудачу с ошибкой сервера 500. Другие сайты, которые имеют такую же установку (установленные IIS, указывающей на каталог проекта) работает просто отлично, однако это терпит неудачу на любое действие, требующее подключения DB:
Наиболее вероятные причины:
- IIS получил запрос; однако во время обработки запроса произошла внутренняя ошибка. Основная причина этой ошибки зависит от того, какой модуль обрабатывает запрос и что происходит в рабочем процессе при возникновении этой ошибки.
- IIS не смог получить доступ к файлу web.config для веб-сайта или приложения. Это может произойти, если разрешения NTFS установлены неверно.
- IIS не смог обработать конфигурацию для веб-сайта или приложения.
- У аутентифицированного пользователя нет разрешения на использование этой библиотеки DLL.
- Запрос сопоставляется с управляемым обработчиком, но функция расширения .NET не установлена.
Вещи, которые вы можете попробовать:
- Убедитесь, что разрешения NTFS для файла web.config являются правильными и разрешить доступ к учетной записи компьютера веб-сервера.
- Проверьте журналы событий, чтобы узнать, была ли зарегистрирована какая-либо дополнительная информация.
- Проверьте разрешения для библиотеки DLL.
- Установите функцию расширения .NET, если запрос сопоставляется с управляемым обработчиком.
- Создайте правило трассировки для отслеживания неудачных запросов для этого кода состояния HTTP. Для получения дополнительной информации о создании правила трассировки для неудавшихся запросов нажмите здесь.
Detailed Error Information:
Module ManagedPipelineHandler
Notification ExecuteRequestHandler
Handler System.Web.Mvc.MvcHandler
Error Code 0x00000000
Requested URL http://project.localhost:80/Home/Test
Physical Path D:\Source\Repos\Project\Project\Home\Test
Logon Method Anonymous
Logon User Anonymous
Я посмотрел в разрешения на Web.Config, но все они хороши, как с IUSR и IIS_IUSRS отдается чтение/выполнение. Пул приложений установлен в значение «Интегрировано», и это, похоже, не проблема IIS , а именно, потому что ряд других сайтов, основанных на базе данных на машине, работает нормально (я просто оставляю их, потому что часто занимаюсь обслуживанием).Поэтому я думаю, что это может быть проблема Web.Config, по крайней мере, с точки зрения того, как она настроена (опять же, разрешения идентичны другим сайтам на машине). И все же, версия IIS, встроенная в Visual Studio, отлично работает с сайтом ... она просто умирает (сбой) всякий раз, когда отладка прекращается (это с любым сайтом).
Итак, я ищу предложения - что может сделать версия IIS, встроенная в VS2015, работать правильно, но IIS в Windows сбой с каким-либо соединением DB на моем текущем сайте? Имейте в виду, что Windows IIS работает с другими сайтами и статическими страницами в этом, а не с действиями, которые имеют доступ к БД любого типа.
Я надеюсь, что кто-то мог бы сказать мне, если что-то не так с моей Web.Config или нет:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="nwebsec">
<section name="httpHeaderSecurityModule" type="NWebsec.Modules.Configuration.HttpHeaderSecurityConfigurationSection, NWebsec, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3613da5f958908a1" requirePermission="false" />
</sectionGroup>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="censored" providerName="System.Data.SqlClient" />
<add name="Elmah" connectionString="censored" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="false" />
<add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="*" />
<add key="elmah.mvc.route" value="elmah" />
<add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
<add key="recaptchaPublicKey" value="censored" />
<add key="recaptchaPrivateKey" value="censored" />
<add key="recaptchaApiVersion" value="2" />
</appSettings>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" enableVersionHeader="false" />
<roleManager enabled="true" />
<pages>
<controls>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
</controls>
</pages>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/Error/Index">
<error statusCode="401" redirect="/Error/Unauthorized" />
<error statusCode="404" redirect="/Error/NotFound" />
<error statusCode="403" redirect="/Error/Forbidden" />
</customErrors>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<remove name="RoleManager" />
<add name="NWebsecHttpHeaderSecurityModule" type="NWebsec.Modules.HttpHeaderSecurityModule, NWebsec, Version=4.2.0.0, Culture=neutral, PublicKeyToken=3613da5f958908a1" />
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
<httpErrors errorMode="Detailed" existingResponse="Replace">
<remove statusCode="403" />
<error statusCode="403" responseMode="ExecuteURL" path="/Error/Forbidden" />
</httpErrors>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="NWebsecConfig" />
</hiddenSegments>
</requestFiltering>
</security>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="AngleSharp" publicKeyToken="e83494dcdc6d31ea" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.9.6.41832" newVersion="0.9.6.41832" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<!--<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />-->
</compilers>
</system.codedom>
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="" port="587" userName="" password="" enableSsl="false" />
</smtp>
</mailSettings>
</system.net>
<nwebsec>
<httpHeaderSecurityModule xmlns="http://nwebsec.com/HttpHeaderSecurityModuleConfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NWebsecConfig/HttpHeaderSecurityModuleConfig.xsd">
<redirectValidation enabled="true" />
<securityHttpHeaders>
<x-Frame-Options policy="Deny" />
<x-Content-Type-Options enabled="true" />
</securityHttpHeaders>
</httpHeaderSecurityModule>
</nwebsec>
<elmah xmlns="http://Elmah.Configuration">
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="false" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah" />
</elmah>
<location path="elmah.axd" inheritInChildApplications="false">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH.
<authorization>
<allow roles="admin" />
<deny users="*" />
</authorization>
-->
</system.web>
</location>
</configuration>
Не зная конкретного исключения, которое происходит, очень сложно сказать, что случилось. Первыми вещами, на которые я бы посмотрел, являются разрешения базы данных. В частности, имеет ли идентификатор, запускающий пул приложений, доступ к базе данных (при условии, что вы используете интегрированную защиту). Если это не сработает, я бы изменил Elmah, чтобы написать файл, чтобы вы могли видеть, что происходит. –
Странная вещь, Elmah работает отлично ... изнутри VS2015 IIS. У меня есть более 40 записей, в которых подробно описаны проблемы, с которыми я столкнулся во время разработки. Но почему-то этот сайт не работает из Windows IIS. –
Вы проверили разрешения базы данных? Потому что это похоже на наиболее вероятную проблему. –