[英]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-For
和X-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.