2013-05-15 2 views
1

Я установил Elmah (стандартный пакет с настройками по умолчанию) через консоль менеджера NuGet.Elmah только в режиме asp.net mvc только

Для проверки и лучшего понимания я попытался переконфигурировать его, поэтому он запускается только в режиме «отладки» (после успешного теста я хотел бы иметь две различные конфигурации для отладки и выпуска (например, в выпуске отправлять электронную почту, в отладка нет и т. д.)).

Поэтому я переместил большую часть (рабочей) конфигурации из Web.config в Web.Debug.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <configSections> 
    <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> 
    <system.web> 
    <httpModules> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
    </httpModules> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <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> 
    </system.webServer> 
    <elmah> 
    <security allowRemoteAccess="false" /> 
    <errorMail from="XXXX" to="XXXX" 
       async="true" smtpPort="0" /> 
    </elmah> 
    <location path="elmah.axd" inheritInChildApplications="false"> 
    <system.web> 
     <httpHandlers> 
     <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
     </httpHandlers> 
    </system.web> 
    <system.webServer> 
     <handlers> 
     <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" /> 
     </handlers> 
    </system.webServer> 
    </location> 
</configuration> 

Теперь, когда я пытаюсь открыть страницу elmah.axd я получаю "Ресурс не может быть найден." ошибка. Я что-то пропустил?

ответ

2

Локально вы должны использовать файл web.config.

Отладка или режим освобождения фактически не имеют никакого отношения к тому, какой конфигурационный файл используется. Это только при развертывании, что преобразование происходит:

web.config

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

web.debug.config

Это то, что применяется при публикации приложения в среде разработки ступенчатого преобразования. Это приведет к изменениям в web.config, которые необходимы для целевой среды.

web.release.config

Это то, что применяется при публикации приложения в среде «производства» преобразования. Очевидно, что вам придется быть осторожным с паролями в зависимости от вашего приложения/команды.

Ссылка ссылка: http://blogs.msdn.com/b/webdev/archive/2010/10/26/asp-net-web-projects-web-debug-config-amp-web-release-config.aspx

+0

Спасибо за разъяснение. Итак, есть ли возможность протестировать содержимое web.debug.config или web.release.config без развертывания? – mosquito87

+0

Вы можете развернуть локальную среду – Kenneth

Смежные вопросы