簡體   English   中英

UriHelper如何獲取生產URL路徑

[英]UriHelper how to get production url path

var displayUrl = UriHelper.GetDisplayUrl(Request);
var urlBuilder = new UriBuilder(displayUrl) {  Query = null, Fragment = null };

string _activation_url = urlBuilder.ToString().Substring(0, urlBuilder.ToString().LastIndexOf("/")) +"/this_is_my_link.html";

我希望獲得正確的uri生產路徑,但我仍然可以

HTTP://本地主機:5000 / API / MDC / this_is_my_link.html

我在centos 7上部署了這個

請幫我..

謝謝

在asp核心上使用

absoluteUri = string.Concat(
                           request.Scheme,
                           "://",
                           request.Host.ToUriComponent(),
                           request.PathBase.ToUriComponent(),
                           request.Path.ToUriComponent(),
                           request.QueryString.ToUriComponent());

或者您可以選擇使用ASP.NET Core獲取絕對URL

如果使用反向代理,則應閱讀Microsoft的本指南

本質上,反向代理應將以下標頭提供給ASP.NET Core應用程序:

  • X-Forwarded-For客戶端IP
  • X-Forwarded-Host來自客戶端的Host標頭(例如www.example.com:80
  • X-Forwarded-Proto Proto-協議(例如HTTPS

然后,您需要配置ASP.NET Core應用程序以接受它們。 您可以通過在Startup的Configure方法中調用app.UseForwardedHeaders()方法來實現。

默認情況下 (如果我正確閱讀了文檔) UseForwardedHeaders (如上所述)將接受來自localhost反向代理的X-Forwarded-ForX-Forwarded-Proto

如果您的情況比這更復雜,則必須配置所需的標頭/受信任的反向代理:

var forwardedOptions = new ForwardedHeadersOptions()
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto // allow for, host, and proto (ForwardedHeaders.All also works here)
};

// if it's a single IP or a set of IPs but not a whole subnet
forwardedOptions.KnownProxies.Add(IPAddress.Parse("192.168.0.5"));

// if it's a whole subnet
forwardedOptions.KnownNetworks.Add(new IPNetwork("192.168.0.1", 24)); // 192.168.0.1 - 192.168.0.254

app.UseForwardedHeaders(forwardedOptions);

還要注意,根據您使用的反向代理,您可能需要在反向代理上進行配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM