2010-07-30 3 views
1

J'utilise asp.net avec url réécrire.DotNetOpenAuth et ReturnToUrl dans les formulaires Web

intérieur chargement de la page Je le code suivant:

OpenIdLogin1.ReturnToUrl = @"~/Login" 

Lorsque je me connecte et revenir à appeler la page, je reçois le message d'erreur suivant:

Échec de la connexion: Le Openid Le paramètre .return_to (http://localhost:12345/Login?dnoa.receiver=ctl00_phContent_ctl00_OpenIdLogin1&dnoa.UsePersistentCookie=Session&dnoa.userSuppliedIdentifier=https://www.google.com/accounts/o8/id) ne correspond pas à l'URL réelle (http://localhost:12345/Templates/Pages/Login/Login.aspx?dnoa.receiver=ctl00_phContent_ctl00_OpenIdLogin1&dnoa.UsePersistentCookie=Session&dnoa.userSuppliedIdentifier=https://www.google.com/accounts/o8/id&openid.ns=http://specs.openid.net/auth/2.0)

Comment puis-je changer l'URL actuelle en URL virtuelle?

Toute aide serait appréciée.

Répondre

2

Je résolu le problème:

var openId = new OpenIdRelyingParty(); 
HttpContext httpContext = HttpContext.Current; 

var headers = new WebHeaderCollection(); 
foreach (string header in httpContext.Request.Headers) 
{ 
    headers.Add(header, httpContext.Request.Headers[header]); 
} 

string requestUrl = string.Format("http://localhost:12345/Login/{0}", 
            httpContext.Request.Url.Query); 

var requestInfo = new HttpRequestInfo(httpContext.Request.HttpMethod, 
             new Uri(requestUrl), 
             httpContext.Request.RawUrl, headers, 
             httpContext.Request.InputStream); 

var response = openId.GetResponse(requestInfo); 
+1

Donc, je vois que c'est exactement ce que j'ai donné dans ma réponse comme ce que vous devriez faire. Pourquoi avez-vous commenté que cela n'a pas fonctionné, et ensuite posté votre propre réponse que cela a fait? –

3

Dans votre appel à GetResponse, transmettez un objet HttpRequestInfo que vous initialisez avec l'URL que vous souhaitez que DotNetOpenAuth considère comme l'URL entrante.

+0

je l'ai fait, mais il me revient toujours à la même URL. –

Questions connexes