2013-10-28 40 views
0

我在控制器上創建回調方法。我使用Oauth授權與社交提供商。當我的回調創建URL和供應商發送的查詢 - 供應商越來越下一網址:ASP.NET MVC模型中UrlHelper不正確

的http:// 127.0.0.1:8080 /的OAuth /回調

,但這個領域在這方面 - http://simple.com

如何使用當前上下文和這個域? 在調試模式下,項目正常工作,因爲項目名稱與localy地址匹配。

var helper = new UrlHelper(requestContext); 
var actionCallback = helper.Action("CallBack", "OAuth", null, "http"); 

回答

0

這對我的作品

UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext); 
var actionCallback = url.Action("CallBack"); 
+0

如果使用,HttpContext無法將「Current」設置爲默認控制器。 –

0

我的意思是這一點。謝謝,我已經解決了這個問題。

public Uri GetUri(Controller.HttpContext.Request request){ 
    var request = Controller.HttpContext.Request; 
    string uriStr = ""; 

    uriStr = String.Format("{0}", request.GetApplicationAbsoluteUrl); 

    // bad variant! but is some fix-stub 
    return new Uri(uriStr+"OAuth/Callback"); 
} 

public static string GetApplicationAbsoluteUrl(this HttpRequestBase request) { 
    string forwardedHost; 
    string appPath = request.ApplicationPath ?? String.Empty; 

    if (appPath.Length > 0 && appPath[appPath.Length - 1] != '/') 
     appPath += '/'; 

    var authority = request.Url.Host == "127.0.0.1" && (forwardedHost = request.Headers["X-Forwarded-Host"]) != null 
        ? forwardedHost 
        : request.Url.Authority; 

    return String.Format("{0}://{1}{2}", request.Url.Scheme, authority, appPath); 
}