如何在ASP.NET MVC中获得我的webapp'的基本URL?

 2023-02-17    370  

问题描述

如何快速确定我的ASP.NET MVC应用程序的根URL是什么?即,如果IIS设置为我的申请,请通过 http://example.com/foo/bar/bar ,,然后,我希望能够以可靠的方式获取该URL,这不涉及从请求中获取当前的URL并以某种脆弱的方式将其切碎,如果我重新撤消了我的动作.

我需要基本URL的原因是该Web应用程序调用另一个需要用于回调的呼叫者Web应用程序的词根.

如何在ASP.NET MVC中获得我的webapp'的基本URL?

推荐答案

假设您有一个可用的请求对象,可以使用:

string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));

如果不可用,您可以通过上下文来了解:

var request = HttpContext.Current.Request

其他推荐答案

所以这里列出的都不适合我,但是使用一些答案,我得到了一些工作:

public string GetBaseUrl()
{
    var request = HttpContext.Current.Request;
    var appUrl = HttpRuntime.AppDomainAppVirtualPath;

    if (appUrl != "/") 
        appUrl = "/" + appUrl;

    var baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);

    return baseUrl;
}

asp.net core/mvc 6:

更新

ASP.NET Core使此过程更加痛苦,尤其是如果您深入代码.您有2个选项可以在HttpContext

上获得

1)从您的controller传递给它:

var model = new MyClass(HttpContext);

然后在model中:

private HttpContext currentContext;

public MyClass(HttpContext currentContext)
{
    this.currentContext = currentContext;
}

2)也许更清洁的方法是将其注入您的课程,这首先要注册Startup:

中的类型

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    services.AddTransient<MyClass, MyClass>();
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}

然后为您注入它:

private HttpContext currentContext;

public MyClass(IHttpContextAccessor httpContextAccessor)
{
    currentContext = httpContextAccessor.HttpContext;
}

无论哪种情况,这都是.NET Core GetBaseUrl()的更新:

public string GetBaseUrl()
{
    var request = currentContext.Request;

    var host = request.Host.ToUriComponent();

    var pathBase = request.PathBase.ToUriComponent();

    return $"{request.Scheme}://{host}{pathBase}";
}

其他推荐答案

代码:

Url.Content("~/");

mvc3剃须刀语法:

@Url.Content("~/")

以上所述是小编给大家介绍的如何在ASP.NET MVC中获得我的webapp'的基本URL?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34242.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。