Запрос авторизации направлен на порт веб приложения

Есть проект, в котором два веб-приложения(Security и Web api). Они крутятся на IIS Express сервере при запуске в VS.

В Security проходит проверка логина и выдача токена. Приложение при запуске разворачивается по адресу http://localhost:37575/

При старте проекта, веб приложение расположенное по адресу http://localhost:37574/, начинает работу с авторизации. При отправке post-запроса (логин, пароль) происходит ошибка 404, а путь к контроллеру таков http://localhost:37574/token/password, то есть в root указан порт web-приложения, а не security-приложения.

Как я понимаю, то в связи с этим и ошибка 404. Он не может найти нужный контроллер? Потому что смотрит не тот порт и, следовательно, не в то приложение. В связи с этим вопрос, что необходимо отладить, чтобы была правильная адресация?

Нужный метод апи вызывается из приложения Security: Есть [RoutePrefix("token")]

[RoutePrefix("token")]
public class TokenController : ApiController
{
    private readonly IUserService _userService;
    private readonly IActiveDirectoryService _adService;
    private readonly IRefreshTokenService _refreshTokenService;

    public TokenController(IUserService userService, IActiveDirectoryService adService, IRefreshTokenService refreshTokenService)
    {
        _userService = userService;
        _adService = adService;
        _refreshTokenService = refreshTokenService;
    }

    [Route("password")]
    [HttpPost]
    public TokenResult Password(PasswordModel model)
    {
        if (!ModelState.IsValid)
            throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));

        try
        {
            var user = _adService.Authenticate(model.Login, model.Password);
            return CreateTokenResultFor(user);
        }
        catch (AuthenticationException ex)
        {
            throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, ex.Message));
        }
    }

В веб-контролере вызывается метод post:

authenticate(login: string, password: string) {
        return this.$http.post<TokenResult>("security/token/password", { grant_type: "password", login: login, password: password }).then(response=> {
            this.completeAuth(response.data, "password");
        });
    }

Пробовал ставить endpoint http://localhost:37575/security/token/password, но это не решило проблему.


Ответы (1 шт):

Автор решения: Андрей

Изначально решение было настроено на работу сервера IIS, а не IIS Express. Тем самым с текущей конфигурацией требовалось разворачивать решение при наличии IIS. Для решения данной проблемы потребовалось развернуть IIS и после открыть решение. Visual Studio автоматически развернула проект, как надо.

→ Ссылка