2012-10-17 15 views
7

Utilizzo DotNetOpenAuth con un'applicazione MVC 4. L'improvvisa autenticazione di Google non funziona (MS sta funzionando). Il codice magazzino fa questo:OAuthWebSecurity.VerifyAuthentication IsSuccessful restituisce false come faccio a determinare il motivo?

[AllowAnonymous] 
public ActionResult ExternalLoginCallback(string returnUrl) 
{ 
    var result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); 
    if (!result.IsSuccessful) 
    { 
     return RedirectToAction("ExternalLoginFailure"); 
    } 

So che result.IsSuccessful è falso, ma come faccio a ottenere il motivo? result.Error è nullo.

Ho anche guardato this page per utilizzare log4net. Ricevo un log sulla casella dev locale ma non quando lo distribuisco su un server remoto.

log4net WebConfig:

<log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="RelyingParty.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="100KB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date (GMT%date{%z}) [%thread] %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 
    <!-- Specify the level for some specific categories --> 
    <logger name="DotNetOpenAuth"> 
     <level value="ALL" /> 
    </logger> 
    </log4net> 

Edit Ho anche provato log4net ad un db SQL, ma ancora non registrava nulla

risposta

3

ho finalmente capito questo. Il messaggio di errore effettivo mi è stato sempre:

Protocol error: This message has a timestamp of 10/23/2012 12:19:33 PM, 
which is beyond the allowable clock skew for in the future. 

Risulta dopo un crash del server fuso orario non ha ottenuto impostato correttamente. Ciò ha causato il fallimento della validazione/del token da parte di Google.

Il AdoNetAppender era "non funzionante" perché bufferSize era impostato su 100. Dopo averlo impostato su 1 ha iniziato a ricevere i registri. Ecco l'adonetappender sto usando

<log4net> 
     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 
     <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionStringName value="CONNECTIONSTRINGNAME" /> 
     <commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%thread" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%logger" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="2000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 
    <root> 
     <level value="Debug" /> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
    <logger name="DotNetOpenAuth"> 
     <level value="ALL" /> 
    </logger> 
    </log4net> 

È necessario impostare la bufferSize di nuovo a 100 quando si ottiene il problema risolto.

+0

Ho lo stesso problema ma non ho usato log4net. Quindi, come posso risolvere questo problema? –

+0

umm .. installa log4net? log4net è il modo in cui DotNetOpenAuth registra eventuali problemi. quindi o fai una domanda su SO o risolvi il problema dai log – Eonasdan

Problemi correlati