有一个项目,其中有两个 Web 应用程序(Security 和 Web api)。它们在 VS 中运行时在 IIS Express 服务器上旋转。
安全检查登录并颁发令牌。应用程序在启动时部署到该地址http://localhost:37575/
项目启动时,位于 的 Web 应用程序http://localhost:37574/
以授权方式启动。发送post请求(登录名、密码)时,出现404错误,并且控制器的路径为http://localhost:37574/token/password
,即在root中指定了web应用程序的端口,而不是安全应用程序的端口。
据我了解,这就是404错误的原因。他找不到合适的控制器?因为它查看了错误的端口,因此查看了错误的应用程序。在这方面,问题是,需要调试什么才能正确寻址?
从安全应用程序调用所需的 api 方法:是[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));
}
}
在 web 控制器中调用 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");
});
}
试图把端点http://localhost:37575/security/token/password
,但它没有解决问题。