发布到IIS10时在PageModel中找不到端点:Http响应404 .Net Core RazorPages

时间:2019-01-14 14:59:27

标签: asp.net-core .net-core razor-pages iis-10

在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?}”。

1 个答案:

答案 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
}