在IIS Express中进行调试时,可以通过GET访问所有终结点。当发布到IIS10时,我可以导航到页面public void OnGet()
被调用并呈现剃刀页面。在服务器IIS10上调用./MyPage/Partial时,我收到404 Not Found错误,并且在Visual Studio的IIS Express上不会发生。
public class IndexModel : PageModel
{
[BindProperty]
public MyModel MyModel { get; set; }
[HttpGet]
public void OnGet()
{
...
}
[HttpGet]
public IActionResult OnGetPartial([FromQuery] int id)
{
...
}
}
我已按照https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2上的说明进行操作,我最大的猜测是我需要根据https://docs.microsoft.com/en-us/aspnet/core/razor-pages/razor-pages-conventions?view=aspnetcore-2.2
配置这些路由尽管我的问题是,为什么在IIS Express中我可以调用javascript jquery $.load('./MyPage/Partial?id=1')
并运行良好,并且在发布时返回404错误?那么具体的解决方案是什么?
编辑:在我的Index.cshtml中,为了处理自定义REST方法,我在顶部有以下@page“ {handler?}”。
答案 0 :(得分:0)
为了解决这个问题,我按照了https://docs.microsoft.com/en-us/aspnet/core/razor-pages/razor-pages-conventions?view=aspnetcore-2.2中Startup.cs文件中的说明或通过以下方式在Program.cs中使用的任何类:
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseStartup<Startup>();
在Startup.cs文件中的方法中
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore().AddRazorPages(options => options.Conventions.AddPageRoute("/MyPage", "/MyPage/Partial/{id}")).AddRazorViewEngine().AddViews();
// Other service code impl. here
}