2016-12-15 3 views
7

Я использую Url.Action для создания абсолютного URL-адреса для отправки по электронной почте. Ссылка создается внутри контроллера.Url.Action с протоколом возвращает ссылку без домена

ConfirmLink = Url.Action(
    "ConfirmEmail", 
    "Account", 
    new { userId = user.Id, code }, 
    HttpContext.Request.Scheme 
) 

По какой-то причине, в местных, у меня есть этот результат:

http://localhost:5102/account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D 

, но у меня есть этот результат, без домена/HTTPS протокола, в перевалочный/прод:

http:///account/confirm-email?userId=10&code=CfDJ8JH5BJKUsPZDnCLwFc3HSEHfe9Fk00NHiJqk36VbvkDbbV39AI7HY5m9pXVItwYE9%2B9ElTcnBSZiDNQ%2FmO5lx1tSnuvDmhzdzGlCQCfPQVe%2B21Nw03uNuBWoO8HCVivqzfudti579bWiaLW6PuuQQimn449YymVjgV3R36HeQID26jTmAxizDTqOsF1%2FvQc5Zw%3D%3D 

Я использую ASP.NET Core с "Microsoft.AspNetCore.Mvc": "1.1.0".

Заявка опубликована в IIS.

+0

Вы пробовали без указания протокола? – ColinM

+0

@ColinM По-прежнему та же проблема: 'http: /// account/confirm-email? UserId = 8 & code = ...' –

+0

Верно ли URL-адрес Url.Action в другом месте, в представлениях или в коде? – ColinM

ответ

0

Try параметр добавления хоста:

ConfirmLink = Url.Action(
    "ConfirmEmail", 
    "Account", 
    new { userId = user.Id, code }, 
    HttpContext.Request.Scheme, 
    HttpContext.Request.Host.Host 
) 
+0

Даже с хостом он не работает. –

+0

Можете ли вы добавить код отладки и посмотреть, что такое значение HttpContext.Request.Host.Host в рабочей среде? – Ross

0

Я использовал, чтобы иметь один и тот же вопрос перед и ниже код работает для меня.

var ConfirmLink = Url.Action(
    "ConfirmEmail", 
    "Account", 
    new { userId = user.Id, code }, 
    HttpContext.Request.Scheme, 
    HttpContext.Request.Host.Value //HttpContext.Request.Host.ToString() 
) 

или вручную

var ConfirmLink = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{Url.Action("ConfirmEmail", "Account")}"; 
Смежные вопросы