2013-10-28 4 views
0

컨트롤러에서 콜백 메서드를 만듭니다. 나는 사회 공급자와 Oauth 허가를 사용합니다. - 내가 콜백 URL을 생성하고 공급자에 대한 쿼리를 보낼 때 제공자는 다음 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는 사용하는 경우 기본 컨트롤러에 "현재"메서드를 사용할 수 없습니다. –

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); 
}