【问题标题】:Blazor app not running server code when on hosted server在托管服务器上时,Blazor 应用程序未运行服务器代码
【发布时间】:2021-08-15 23:23:18
【问题描述】:

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

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

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

通过 Visual Studio 运行时,它工作得非常好。

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

我调用的方法实际上只返回 200 消息。所以我认为问题在于调用服务器方法本身。

【问题讨论】:

  • 也许是调试模式?

标签: .net-5 blazor-webassembly


【解决方案1】:

首先,使用 Logging:

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 

在托管服务器上。

从那里拿走...

【讨论】:

    猜你喜欢
    • 2023-01-19
    • 1970-01-01
    • 2020-09-26
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多