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
Помогите мне, пожалуйста..
Спасибо
дон
Если вы используете обратный прокси-сервер, вам следует прочитать это руководство от Microsoft.
По сути, ваш обратный прокси-сервер должен предоставлять эти заголовки вашему базовому приложению ASP.NET:
X-Forwarded-For
- IP-адрес клиентаX-Forwarded-Host
- заголовок Host
от клиента (например, www.example.com:80
)X-Forwarded-Proto
- протокол (например, HTTPS
) Затем вам нужно настроить приложение ASP.NET Core для их принятия. Вы можете сделать это, вызвав метод app.UseForwardedHeaders() в вашем методе Configure
запуска.
По умолчанию (если я правильно читаю документы) UseForwardedHeaders
(называемый выше) будет принимать X-Forwarded-For
и X-Forwarded-Proto
от обратного прокси-сервера localhost
.
Если ваша ситуация сложнее, вы должны настроить требуемые заголовки/доверенные обратные прокси:
var forwardedOptions = new ForwardedHeadersOptions()
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto // allow for, host, and proto (ForwardedHeaders.All also works here)
};
// if it a single IP or a set of IPs but not a whole subnet
forwardedOptions.KnownProxies.Add(IPAddress.Parse("192.168.0.5"));
// if it a whole subnet
forwardedOptions.KnownNetworks.Add(new IPNetwork("192.168.0.1", 24)); // 192.168.0.1 - 192.168.0.254
app.UseForwardedHeaders(forwardedOptions);
Также обратите внимание, что в зависимости от используемого вами обратного прокси-сервера вам может потребоваться настроить его на обратном прокси-сервере.
при использовании ядра asp
absoluteUri = string.Concat(
request.Scheme,
"://",
request.Host.ToUriComponent(),
request.PathBase.ToUriComponent(),
request.Path.ToUriComponent(),
request.QueryString.ToUriComponent());
или вы можете выбрать либо Получение абсолютных URL-адресов с помощью ASP.NET Core
Host
из того же места, что и предложенное вами решение.
X-Forwarded-For
,X-Forwarded-Host
иX-Forwarded-Proto
? Наконец, настроили ли вы свое приложение для принятия этих (и для доверия обратному прокси-серверу)?