2012-01-17 31 views
7

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:

Image of Error Screen

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

+0

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

Respuesta

6

Parece que sus redireccionamientos de enlace están dañados. Observe cómo System.Web.Mvc aparece dos veces? Intente eliminar el segundo ya que el primero parece correcto.

Sí, DNOA está diseñado contra MVC 1.0, y esto es por diseño para que funcione contra todas las versiones de MVC (dados los redireccionamientos apropiados). Esto es puramente una cosa de la versión MVC, no una cosa de .NET 4.0.

+0

Tienes un buen ojo. ¡¡Gracias!! Pensé que me estaba volviendo loco. –

+0

Gracias Gracias Gracias :). Estaba teniendo el mismo problema, para mvc3, esto funcionó para mí "". – labroo

Cuestiones relacionadas