我试图制作一个ASP.NET Core Web应用程序来承载IdentityServer,并将其用作我的主要授权服务,并与许多其他应用程序共享。
我遵循了快速入门教程,该教程包括在空的MVC应用程序模板中安装nuget包(称为IdentityServer4)。
我的机器上一切正常(使用VS2017和VS2019预览版进行调试)。 我试图像以前的应用程序一样,将应用程序发布为Azure应用程序服务,并且运行良好。
在调试时,如果我打开浏览器并键入“ https://localhost:44316/”,则会看到此页面:
但是导航到“ https://xxx.azurewebsites.net”(即我发布应用程序的位置)不起作用。找不到响应404。
只需添加一些细节,如果我浏览此“ https://localhost:44316/Account/Login?ReturnUrl=%2Fgrants”,就会获得正确的登录页面,并在Azure上执行相同的操作会产生相同的结果。
因此,从本质上讲,除了主页外,它看起来还在工作。
我不是ASP.NET Core路由方面的专家,所以如果我的问题不太聪明,也不要怪我。
答案 0 :(得分:8)
这实际上是预期的行为-如果您查看IdentityServer4.Quickstart.UI项目中提供的public IActionResult Index()
{
if (_environment.IsDevelopment())
{
// only show in development
return View();
}
_logger.LogInformation("Homepage is disabled in production. Returning 404.");
return NotFound();
}
的实现,则会看到以下实现(source):
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Component
public class AccountsController {
@GET
@Path("/v1/acctDetails/{rqUID}")
@Produces(MediaType.APPLICATION_JSON)
@ApiResponses(value = { @ApiResponse(code = ResponseCodes.SUCCESS_200, message = ResponseCodes.SUCCESS_200_MSG),
@ApiResponse(code = ResponseCodes.ERROR_500, message = ResponseCodes.ERROR_500_MSG),
@ApiResponse(code = ResponseCodes.ERROR_404, message = ResponseCodes.ERROR_404_MSG) })
public javax.ws.rs.core.Response getAccountInfoInq(@PathParam("rqUID") String RqUID, @QueryParam("tranDate") String tranDate) {
return acctInfoInquiry.getAccountInfoInq(rqUID, tranDate);
}
}
在Azure中运行时,该应用程序将不在开发环境中运行,因此将返回404 NotFound,如上所示。