ASP.NET MVC中的模型中的UrlHelper不正确

时间:2013-10-28 13:53:33

标签: asp.net-mvc urlhelper

我在控制器上创建了Callback方法。我使用社交提供商的Oauth授权。当我为回调创建url并为提供者发送查询时,提供者正在获取下一个URL:

http:// 127.0.0.1:8080 / OAuth / CallBack

但在此上下文中的此域名 - http://simple.com

如何使用当前上下文和此域名? 在调试模式下,项目工作正常,因为项目名称与localy地址匹配。

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

2 个答案:

答案 0 :(得分:0)

这对我有用

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

答案 1 :(得分: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);
}