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:
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
È 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