Elmah не работи с gmail за MVC 3

Използвам ELMAH за моето приложение MVC 3 с Gmail. Използвах няколко препратки как да направя това, включително този въпрос на StackOverflow, който преминава през множество корекции

Все още не мога да определя защо не получавам имейли от elmah. Опитвам се да тествам това, като хвърлям NullReferenceException в моя код, който извиквам.

Моят web.config изглежда така:

     <configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
    <sectionGroup name="elmah">
      <section name="errorMail" requirePermission="false"  type="Elmah.ErrorMailSectionHandler, Elmah"/>
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
    </httpHandlers>
    <httpModules>
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
    </httpModules>

    <!--
        Enabling request validation in view pages would cause validation to occur
        after the input has already been processed by the controller. By default
        MVC performs request validation before a controller processes the input.
        To change this behavior apply the ValidateInputAttribute to a
        controller or action.
    -->
     <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
      </pages>
      </system.web>
      <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.gmail.com" port="587" userName="[email protected]" password="myPassword"/>
      </smtp>
    </mailSettings>
    </system.net>
    <elmah>
    <errorMail   from="[email protected]" to="[email protected]" subject="Error" async="true" smtpPort="587"       useSsl="true"/>
    </elmah>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

      <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode"    type="System.Web.HttpNotFoundHandler" />
      <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd"      type="Elmah.ErrorLogPageFactory, Elmah"/>
    </handlers>

    <modules runAllManagedModulesForAllRequests="true">
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </modules>
    </system.webServer>
    </configuration>

Някакви идеи защо това може да не работи?


person TheJediCowboy    schedule 06.10.2011    source източник
comment
Глупав въпрос, но трябва да попитам - проверихте ли спам филтъра на Gmail? Често забравям да погледна там, но понякога може да бъде агресивно.   -  person Ken Pespisa    schedule 06.10.2011
comment
Няма такова нещо като глупав въпрос! Като се има предвид това, проверих, но нямах успех =( Идеите ми се изчерпват! Благодаря за коментара!   -  person TheJediCowboy    schedule 07.10.2011


Отговори (1)


РЕДАКТИРАНЕ: Това може да не е непременно вярно, гледайки други ELMAH конфигурации, но все пак може да искате да опитате това. Освен това знам, че атрибутът enableSSL в настройките за поща на system.net е нов в .NET 4.0 - може да искате да добавите enableSSL=true и в този раздел, тъй като GMail използва SSL за свързване.

Изглежда, че сте оставили свойството за конфигурация на хоста и няколко други настройки извън настройките на ELMAH за имейл, когато сравнявате настройката си с тези на други ELMAH конфигурации. Не мисля, че ELMAH разглежда настройките за поща на system.net, а по-скоро това е собствен етикет errorMail

Това:

<elmah>
    <errorMail 
      from="[email protected]"
       to="[email protected]"
       subject="Error"
       async="true"
       smtpPort="587"
       useSsl="true"/>
    </elmah>

Трябва да се промени на това:

<elmah>
    <errorMail 
      from="[email protected]"
       to="[email protected]"
       subject="Error"
       async="true"
       smtpPort="587"
       useSsl="true"
       host="smtp.gmail.com"
       userName="[email protected]"
       password="myPassword"/>
    </elmah>
person Tommy    schedule 06.10.2011
comment
В ‹errorMail› задайте атрибута smtpPort на 0. Това ще накара ELMAH да използва вместо това порта, дефиниран в настройките на ‹system.net›. - person AhsenBaig; 02.11.2011
comment
трябва ли атрибутът на хоста да бъде smtpServer? - person Scott Coates; 03.03.2012
comment
Не съм сигурен точно каква част от това помогна, но се борих цял ден, опитвайки се да накарам elmah да изпрати имейл през SES и използвайки вашите настройки ми свърши работа! Благодаря! - person Avalanchis; 21.05.2014
comment
Настройките на пощата на Elmah ми свършиха работа. Имам уеб приложение и услуга за Windows, за които използвам Elmah. Нито препредаваме имейла. Добавих настройките за поща към възела за конфигуриране на elmah и в двете и двете започнаха да работят. - person Brandon Lewis; 06.03.2017