He estado probando las muestras de DotNetOpenAuth con ASP.Net MVC 4 Developer Preview.DotNetOpenAuth con MVC 4.0
puedo invocar con éxito mi acción de mi página de prueba, pero correr en una edición extraña debido a una línea de código:
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
Si comento hacia fuera la línea de código y elimine la anterior esta , Ya no veo el error de tiempo de ejecución.
Hasta aquí he intentado:
1) Asegurar que tengo las redirecciones correctas:
<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) tienen los espacios de nombres correctos:
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions;
Me parece que el dll DotNetOpenAuth se compiló contra MVC V 1.0.0 y el redireccionamiento de enlace no funciona o el método de extensión tal vez funcionaba en contra de un método obsoleto.
MVC Versión: 4.0.0.0 DotNetOpenAuth Versión: 3.4.7.11121
Cualquier ayuda en conseguir este trabajo con MVC 4 sería muy apreciada. La imagen de la pantalla de error MVC es más adelante:
actualización me encontré con que AsActionResult es la causa del problema, tal vez porque el método de extensión no es compatible con .Net 4.0. Puedo obtener el objeto OutgoingWebResponse de request.RedirectingResponse pero sé cómo convertirlo a ActionResult
Es su código de muestra para que OpenId trabaje con MVC4 en algún lugar que pueda ver. Me encuentro con numerosos problemas que van desde rutas de imagen a errores JS cuando invoco el botón del proveedor. – Picflight