【问题标题】:Incorrect UrlHelper in models in ASP.NET MVCASP.NET MVC 中模型中的 UrlHelper 不正确
【发布时间】:2013-11-07 07:59:35
【问题描述】:

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

http://127.0.0.1:8080/OAuth/CallBack

但是在这种情况下这个域 - http://simple.com

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

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

【问题讨论】:

    标签: asp.net-mvc urlhelper


    【解决方案1】:

    这对我有用

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

    【讨论】:

    • HttpContext 不能在默认控制器中使用“Current”。
    【解决方案2】:

    我是说这个。谢谢,我已经解决了这个问题。

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

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2017-03-26
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多