2012-01-17 18 views
7

Ho provato gli esempi DotNetOpenAuth con ASP.Net MVC 4 Developer Preview.DotNetOpenAuth con MVC 4.0

posso invocare con successo la mia azione dalla mia pagina di prova, ma incorrere in un problema strano perché di una riga di codice:

var request = _openid.CreateRequest(openIdUrl); 
    var fetch = new FetchRequest(); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.First); 
    fetch.Attributes.AddRequired(WellKnownAttributes.Name.Last); 
    request.AddExtension(fetch); 
    //return RedirectToAction("Login"); 
    return request.RedirectingResponse.AsActionResult(); // <-- This is the line throwing the error 

Se io commento la riga di codice e rimuovere quello prima di questo , Non vedo più l'errore di runtime.

Finora ho provato:

1) Assicurare che ho i reindirizzamenti corrette:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> 
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    <legacyHMACWarning enabled="0" /> 
</runtime> 

2) hanno gli spazi dei nomi corretti:

using DotNetOpenAuth.OpenId.Extensions.AttributeExchange; 
using DotNetOpenAuth.OpenId.Extensions; 

Mi sembra che la DLL DotNetOpenAuth è stata compilata su MVC V 1.0.0 e il reindirizzamento dell'associazione non funziona o il metodo di estensione stava forse lavorando contro un metodo deprecato.

MVC Versione: 4.0.0.0 DotNetOpenAuth Versione: 3.4.7.11121

Qualsiasi aiuto su come ottenere questo lavoro con MVC 4 sarebbe molto apprezzato. L'immagine schermata di errore MVC è più avanti:

Image of Error Screen

Aggiornamento ho scoperto che AsActionResult è la causa del problema, forse perché il metodo di estensione non è compatibile con .Net 4.0. Posso ottenere l'oggetto OutgoingWebResponse dalla richiesta.RedirectingResponse ma so come trasmetterlo a ActionResult

+0

È il codice di esempio per far sì che OpenID funzioni con MVC4 da qualche parte. Ricevo numerosi problemi che vanno dai percorsi delle immagini agli errori JS quando invoco il pulsante del provider. – Picflight

risposta

6

Sembra che i reindirizzamenti dell'associazione siano corrotti. Si noti come System.Web.Mvc appare due volte? Prova a rimuovere il secondo mentre il primo sembra corretto.

Sì, DNOA è costruito contro MVC 1.0 e questo è di progettazione in modo che funzioni contro tutte le versioni di MVC (dati i reindirizzamenti appropriati). Questo è puramente una cosa di versione MVC - non una cosa di .NET 4.0.

+0

Hai un occhio molto attento. Grazie!! Pensavo stavo impazzendo. –

+0

Grazie Grazie Grazie :) .. Stavo ricevendo lo stesso problema, per mvc3, questo ha funzionato per me "". – labroo

Problemi correlati