Question

J'ai essayé les échantillons dotNetOpenAuth avec ASP.NET MVC 4 Developer Aperçu.

Je peux invoquer avec succès mon action de ma page de test, mais rencontrer un problème étrange en raison d'une ligne de code:

  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 je commençais la ligne de code offensée et l'incommente celle avant cela, je ne vois plus l'erreur d'exécution.

Jusqu'à présent, j'ai essayé:

1) S'assurer que j'ai les correctifs corrects:

<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) Ayez les espaces de noms corrects:

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

Il me semble que la DLL DotnetOpenAuth a été compilée contre MVC V 1.0.0 et que la redirection de liaison ne fonctionne pas, soit la méthode d'extension fonctionnait peut-être contre une méthode obsolète.

Version MVC: 4.0.0.0 Version DotnetOpenAuth: 3.4.7.11121

Toute aide pour que cela fonctionne avec MVC 4 serait grandement apprécié. L'image de l'écran d'erreur MVC est plus loin:

Image de l'écran d'erreur

Mise à jourJ'ai trouvé qu'AsActionResult est la cause du problème, peut-être parce que la méthode d'extension n'est pas compatible avec .NET 4.0. Je peux obtenir l'objet Outgingwebresponse de request.redirectingResponse mais sachez comment le lancer sur un ActionResult

Était-ce utile?

La solution

Il semble que vos redirections de liaison soient corrompues. Remarquez comment System.web.mvc apparaît deux fois? Essayez de retirer le second car le premier semble correct.

Oui, DNOA est construit contre MVC 1.0, et c'est par conception afin qu'il fonctionne contre toutes les versions de MVC (compte tenu des redirectes appropriés). C'est purement une version de MVC - pas une chose .NET 4.0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top