J'ai beaucoup travaillé avec DotNetOpenAuth. Nous avons d'abord utilisé la version 5.0.0-alpha1 mais nous sommes passés à la version 4.0.30319 parce que nous n'arrivions pas à trouver ce qui causait nos problèmes.
Nous construisons un projet API Web C# sur .NET 4.5.1 RC avec MVC 5 RC dans Visual Studio 2013. Nous avons implémenté IAuthorizationServerHost
, INonceStore
et ICryptoKeyStore
.
Le problème que nous rencontrons se situe dans le cas suivant :
public class TokensController : Controller
{
private readonly AuthorizationServer authorizationServer = new AuthorizationServer(new MyAuthorizationServer());
/// <summary>
/// This action will handle all token requests.
/// </summary>
/// <returns>The action result that will output the token response.</returns>
[HttpPost]
public ActionResult Index()
{
var outgoingWebResponse = this.authorizationServer.HandleTokenRequest(this.Request);
return outgoingWebResponse.AsActionResult();
}
}
return outgoingWebResponse.AsActionResult();
une méthode qui trouve son origine dans DotNetOpenAuth.Messaging
et le MessagingUtilities
classe statique. Le site DotNetOpenAuth.Core
(qui contient ce code) fait référence à MVC 4.0 et aux HttpResponseMessageActionResult
hérite de la classe ActionResult
.
Cela signifie que la version actuelle de DotNetOpenAuth n'est pas compatible avec MVC 5. Compiler et essayer de l'exécuter ne fera que provoquer des erreurs 500.
Quelqu'un a-t-il une idée de la façon dont cela pourrait être facilement corrigé (ou peut-être pas) ?
Je n'avais pas remarqué que le paquet Nuget DotNetOpenAuth avait écrasé mes paquets pour 5.0. Donc, après avoir réinstallé les paquets et ajouté le assemblyBinding à nouveau :
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
Cela nous a permis d'avancer un peu. Maintenant, l'erreur se résume à :
La tentative de la méthode transparente de sécurité 'DotNetOpenAuth.Messaging.MessagingUtilities.AsActionResult(DotNetOpenAuth.Messaging.OutgoingWebResponse)' d'accéder au type critique de sécurité 'System.Web.Mvc.ActionResult' a échoué.