ActionResult reindirizzamento rendering utilizzando ToString ()
-
20-09-2019 - |
Domanda
Utilizzando il seguente esempio: http: //www.west-wind. com / Weblog / messaggi / 899303.aspx
La seguente riga ...
return req.RedirectingResponse.AsActionResult();
rende la stringa "DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult". Questa è la classe viene restituito come ActionResult nella linea come pubblicato. Qualcuno sa il motivo per cui ho il nome della classe come stringa invece di un redirect reale?
Thnx in anticipo!
Soluzione
E 'possibile che si dispone di più versioni di MVC nella directory Bin e il server web? Mi sembra che se tu avessi più assembly (diverse versioni) dei tipi MVC come ActionResult
caricati nel vostro dominio di applicazione, e il metodo AsActionResult
ritorna una versione e la tua MVC web app utilizzata una versione diversa, che potrebbe semplicemente salvare con un ToString
. Quale versione di ASP.NET MVC sono in esecuzione? Metodo AsActionResult
di DotNetOpenAuth è stato compilato con la versione 1.0 RTM del framework MVC. Se stai usando ASP.NET MVC 2 (incluso in .NET 4.0), ho potuto vedere questo forse essere un problema.
Credo che se si aggiunge questo frammento di codice al file web.config MVC 2 di, che vi permetterà di utilizzare la build ufficiale di DotNetOpenAuth in modo da non dover costruire il proprio:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Altri suggerimenti
Un'altra soluzione, che lavora per me con .Net 3.5 e MVC 2.
Al posto di
var authRequest = relyingParty.CreateRequest(....);
....
return authRequest.RedirectingResponse.AsActionResult();
utilizzo
var authRequest = relyingParty.CreateRequest(....);
....
authRequest.RedirectToProvider();
Response.End();
return new EmptyResult();