为什么我的 ASP.NET Core 5 Razor 页面在 IIS 上返回 404,但在 Visual Studio 中却没有?

问题描述 投票:0回答:1

我们有一个基于 .NET Core 5 构建的应用程序,有一个非常奇怪的问题。 95% 的 Web 应用程序运行完美,但有一个 Razor 页面会生成 404 - 但部署到生产服务器时。

在 Visual Studio 中,一切都按预期工作,但即使使用

dotnet MySite.dll
(该命令的
.exe
版本也不起作用 - 它表示
deps.json
文件中存在具有不同扩展名的重复引用,但针对的是
.dll
版本达到了我的预期),在端口 5000/5001 上启动了一个“开发”Web 服务器,但即便如此在这一页上获取 404。所有其他页面(包括部分视图)均按预期工作。

页面上的代码非常基本,因为它是这样的部分视图设置:

@page "/providers/information"
@model ProviderInformationChangeRequestModel
@{
    Layout = null;
}

页面上的其余内容只是 HTML - 它有一个表单、文本框和按钮,所以没有什么花哨的。剃刀页面后面的内容也很基本:

public async Task<IActionResult> OnGet()
{
    //EntityModel is a public property exposed on our base `PageModel` class (ours extends the Microsoft one)
    this.EntityModel = new ProviderChangeModel();

    //this is an API call - we use this exact call all over the site, so presumably it isn't failing, since it works everywhere else
    var entity = await this.GetFromJsonAsync<ProviderUserModel>("/user/me");

    this.EntityModel.ProviderUserId = entity.Id;
    this.EntityModel.ProviderId = entity.ProviderId.Value;

    return Page();
}

我们使用这种类型的结构的所有其他部分视图都可以工作——无论是部署的还是通过 VS 的——只有这一页不起作用。我读过,当 Razor 页面进行后端 API 调用(如果其中一个调用返回 404)时,有时会发生这种情况,但它所做的唯一调用是我们在整个网站中使用的调用,因此不可能是这样。

有人有任何想法可以为我们指明正确的方向吗?如果它在 VS 中失败,很容易追踪,但由于它只是部署的版本(我已重新部署多次,重新启动相应的应用程序池等),我不知所措。

c# asp.net-core iis http-status-code-404 razor-pages
1个回答
10
投票

.cshtml 页面上的

Build Type
设置为
None
而不是
Content
- 它在 VS 中的工作原理我不确定我是否理解,但至少现在已经解决了。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.