Blazor 应用程序在托管服务器上未运行服务器代码

时间:2021-05-27 16:46:07

标签: .net-5 blazor-webassembly

我有一个 blazor Web 程序集应用程序,并且创建了 3 个项目。客户端、服务器和共享。我假设在使用 webdeploy 时所有这些都作为标准部署?

该站点的工作原理是它显示页面等。但是,当我转到通过 Http.PostAsJsonAsync() 方法联系服务器项目的页面时,我得到了 blazor 错误页面(我设置为“哎呀” ).

很明显,我没有得到关于出了什么问题的详细信息。所以我不知道发生了什么。服务器应用程序是否已编译到 Web 程序集应用程序中?如果是这样,为什么它不运行服务器代码?另外,我想另一个问题是我如何让它报告错误,以便我知道出了什么问题?

通过 Visual Studio 运行它时它工作得很好。

这是我第一次部署到托管服务器,所以很有可能我做错了什么......

我实际上调用的方法除了返回 200 消息之外什么都不做。所以我认为问题在于调用服务器方法本身。

1 个答案:

答案 0 :(得分:0)

首先,使用日志:

https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/logging?view=aspnetcore-5.0&pivots=server

@inject ILogger<MyComponent> Logger

然后将您的 Http.PostAsJsonAsync() 调用包装在 Try Catch 块中。

在 Catch 块中记录错误:

try
{
     await Http.PostAsJsonAsync()
}
catch (Exception e)
{
    Logger.LogError(e);
}

部署后,编辑您的 web.config 文件:

<aspNetCore processPath="dotnet" 
            arguments=".\Hospitillity.App.Server.dll" 
            stdoutLogEnabled="true"      // <<< MAKE THIS true
            stdoutLogFile=".\logs\stdout" 
            hostingModel="inprocess">

注意,设置 stdoutLogEnabled="true"。这会导致您的托管服务提供商生成日志文件。

然后在您的托管服务提供商处回收您的应用程序池。

再次连接到您的网站,在出现错误后,您应该了解有关登录错误的更多详细信息

\logs\stdout_nnnnnnnnnnnnnn_nnnnnn.log 

在托管服务器上。

从那里拿走...