Frage

Ich habe die DotNetOpenAuth-Beispiele mit ASP.Net MVC 4 Developer Preview ausprobiert.

Ich kann meine Aktion erfolgreich von meiner Testseite aus aufrufen, stoße jedoch aufgrund einer Codezeile auf ein seltsames Problem:

  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

Wenn ich die fehlerhafte Codezeile auskommentiere und die vorhergehende auskommentiere, wird der Laufzeitfehler nicht mehr angezeigt.

Bisher habe ich versucht:

1) Stellen Sie sicher, dass ich die richtigen Weiterleitungen habe:

<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) Haben Sie die richtigen Namespaces:

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

Es scheint mir, dass die DotNetOpenAuth-DLL gegen MVC V 1.0.0 kompiliert wurde und die Bindungsumleitung entweder nicht funktioniert oder die Erweiterungsmethode möglicherweise gegen eine veraltete Methode funktioniert.

MVC-Version: 4.0.0.0 DotNetOpenAuth Version: 3.4.7.11121

Jede Hilfe, um dies mit MVC 4 zum Laufen zu bringen, wäre sehr dankbar. Das Bild des MVC-Fehlerbildschirms befindet sich weiter unten:

Bild des Fehlerbildschirms

Update Ich habe festgestellt, dass AsActionResult die Ursache des Problems ist, möglicherweise weil die Erweiterungsmethode nicht mit .Net 4.0 kompatibel ist. Ich kann das OutgoingWebResponse-Objekt von request.RedirectingResponse abrufen, weiß aber, wie es in ein ActionResult umgewandelt wird

War es hilfreich?

Lösung

Ihre Bindungsumleitungen scheinen beschädigt zu sein.Beachten Sie, wie System.Web.Mvc zweimal angezeigt wird?Versuchen Sie, den zweiten zu entfernen, da der erste korrekt aussieht.

Ja, DNOA wurde für MVC 1.0 erstellt. Dies ist beabsichtigt, damit es für alle Versionen von MVC funktioniert (sofern die entsprechenden Weiterleitungen vorhanden sind).Dies ist eine reine MVC-Version - keine .NET 4.0-Sache.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top