标签: blazor-server-side

C# Blazor 服务器:使用 INotifyPropertyChanged 显示实时数据

我遇到了一个小问题,我尝试在 Blazor 服务器项目的页面上显示实时数据。阅读了几篇文章后,我认为这应该可以使用 INotifyPropertyChanged 来实现。不幸的是我对此很菜鸟,这是我尝试过的:

我的模型价格与 INotifyPropertyChanged (使用 Rider 生成):

public class Price : INotifyPropertyChanged
{
    private double _askPrice;
    private double _bidPrice;
    private double _spread;

    public Price(double askPrice, double bidPrice)
    {
        _askPrice = askPrice;
        _bidPrice = bidPrice;
    }

    public double AskPrice {
        get => _askPrice;
        set
        {
            _askPrice = value; 
            OnPropertyChanged("AskPrice");
            OnPropertyChanged("Spread");
        }
    }

    public double BidPrice
    {
        get => _bidPrice;
        set
        {
            _bidPrice = value; 
            OnPropertyChanged("BidPrice");
            OnPropertyChanged("Spread");
        }
    }

    public double Spread => _askPrice - _bidPrice;

    public event PropertyChangedEventHandler …
Run Code Online (Sandbox Code Playgroud)

c# asp.net inotifypropertychanged blazor blazor-server-side

3
推荐指数
1
解决办法
4547
查看次数

如何使我的 Blazor 服务器端应用程序 IIS 8.5 保持活动状态

我需要让我的 blazor 服务器端应用程序始终保持活动状态。

我尝试将 iis 8.5 启动模式设置为“alwaysrunning”,并将“idle”设置为 0,但仍然关闭应用程序并捕获停止信号...在 23 点到 29 点之间...

在此输入图像描述

我必须做什么才能让它活下去,我错过了哪个设置?我必须在 web.config 上添加代码吗?

iis keep-alive asp.net-core blazor blazor-server-side

3
推荐指数
1
解决办法
2525
查看次数

如何在 Blazor 中将 AuthorizeView 标记与自定义身份验证逻辑结合使用

我在 Blazor 服务器应用程序中有一个自定义身份验证系统,具有自定义数据库和一些逻辑。

我希望受益于 razor 中内置的 AuthorizeView 标签。但我不知道如何在没有 AspNetCore.Identity 的情况下使用它。

现在我有一个全局属性 bool IsAuthorized 来检查用户是否登录。最重要的是,我想也许我可以将 IsAuthorized 属性绑定到 AuthorizeView 标签 Authorize 和 NotAuthorized。

我通读了 AuthorizeView 参考,但找不到哪个属性控制它的状态。

是否可以在自定义身份验证逻辑中使用 AuthorizeView,而无需内置“身份”?

blazor blazor-server-side

3
推荐指数
1
解决办法
5131
查看次数

如何从任何类 blazor 服务器端读取 appsetting.json

我知道如何从 razor 组件访问 appsetting.json,但如何从 blazor 服务器端项目中的任何类访问?

从剃刀组件我只需注入:

@注入IConfiguration_config

并访问我需要的所有内容,例如:_config.GetConnectionString("default")

但如何在任何班级中做同样的事情呢?当我尝试做的时候

I配置_config;

它说当我想要访问数据时 _config 为空或者是一个未分配的局部变量取决于我写入变量的位置。

c# appsettings blazor blazor-server-side

3
推荐指数
2
解决办法
2万
查看次数

CentOS 和 Nginx 上 blazor 上的 websocket 问题

我正在尝试使用 CentOS 将我的 blazor 应用程序(服务器端)部署到我的 VPS 中。

部署顺利,我可以访问我的网站,但在控制台中我看到以下错误:

blazor.server.js:1 WebSocket connection to 'wss://website.com/_blazor?id=bMDvWwyNa5R5y9KsTVUS6A' failed: 
(anonymous) @ blazor.server.js:1
blazor.server.js:1 [2021-05-01T07:33:36.170Z] Error: Failed to start the transport 'WebSockets': Error: There was an error with the transport.
e.log @ blazor.server.js:1
/_blazor?id=l_DDVIXzIu1Ro3zd9stUsA&_=1619854490093:1 Failed to load resource: the server responded with a status of 504 ()
blazor.server.js:1 [2021-05-01T07:35:50.195Z] Error: Connection disconnected with error 'Error'.

Run Code Online (Sandbox Code Playgroud)

我不知道如何对付他们。

据我了解,websocket/signalR 没有打开,这意味着一旦网站加载,连接就会“切断”,这里的问题是 blazor 每分钟都会调用一次,所以我收到一条消息说它确实这样做了attempting to reconnect to the server。但该网站有 5 秒左右无法使用。

为了解决这个问题,我尝试了网上看到的多种解决方案:

在项目中:设置services.AddSignalR()并且app.UseWebSockets()它不起作用。

我也认为它可能是 …

nginx websocket centos7 blazor-server-side

3
推荐指数
1
解决办法
2273
查看次数

部分类中继承 ComponentBase 的继承基类给出错误

我正在使用 Something.razor 文件和 Something.razor.cs 文件背后的代码。我的分部类继承自 SomethingBase,而 SomethingBase 本身又继承自 ComponentBase。

然而这会产生错误

CS0115 .buildrendertree(rendertreebuilder)':没有找到合适的方法来覆盖部分类 CS0263 的部分声明,不得指定不同的基类。

但是,如果 Something 直接继承自 ComponentBase 则没有问题。

第一个问题请温柔一点。如果需要的话,我会在早上更新代码和更多细节。

c# partial-classes blazor blazor-server-side

3
推荐指数
1
解决办法
1221
查看次数

无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数

我尝试使用 /somepage/{Id} 调用页面,其中 Id 是带有[Parameter]int 属性的页面,并且路由作为字符串调用,它不应该将字符串隐式转换为 int 吗?为什么它根本不起作用?我希望它能识别参数,因为它是......

我应该如何尝试让路由中间件识别参数?即使在 MVC 中也可以正常工作......

页面路由

@page "/EditEmployee/{Id}"
Run Code Online (Sandbox Code Playgroud)

链接

<a href="/EditEmployee/@Employee.EmployeeId" class="btn btn-primary m-1">Edit</a>
Run Code Online (Sandbox Code Playgroud)

页面中的参数

    [Parameter]
    public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

结果出现异常,页面无法加载

razor razorengine razor-pages blazor-server-side

3
推荐指数
1
解决办法
2039
查看次数

SignalR:根据验证程序,远程证书无效:RemoteCertificateNameMismatch

我在 .Net 5 中有一个 Blazor 服务器应用程序,它工作正常。最近,我添加了一个用于通知消息的 SignalR HubConnection,但由于在生产服务器中建立了 SSL 连接,我遇到了异常,如下所示:

Workflow2.Common.DalException: The SSL connection could not be established, see inner exception.
 ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch
   at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)
   at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
[2022-01-26 13:07:30.970][ERR]: InnerException Message
System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: …
Run Code Online (Sandbox Code Playgroud)

ssl-certificate signalr-hub blazor-server-side

3
推荐指数
1
解决办法
2676
查看次数

使用 InputSelect 时出现 Blazor 错误“以下方法或属性之间的调用不明确”

我正在开发服务器端 Blazor 应用程序。我的目标是用对象列表动态填充下拉列表,然后在选择该对象时对其执行某些操作。这是我收到的错误:

The call is ambiguous between the following methods or properties: 'RenderTreeBuilder.AddAttribute(int, string, string?)' and 'RenderTreeBuilder.AddAttribute(int, string, MulticastDelegate?)'
Run Code Online (Sandbox Code Playgroud)

错误位于文件“ListDropdownComponent.g.cs”中,我没有对此文件进行任何更改,因此我怀疑 Visual Studio 将我指向了错误的源。

当我注释掉这段代码时,错误消失了,所以我认为这就是错误所在:

<InputSelect @bind-Value="SelectedList" TValue="ListModel" @onchange="AddToList">
    <option value="@null">Add to list</option>
    @foreach (ListModel list in Lists)
    {
        <option value="@list">@list.ListName</option>
    }
    <option value="@(new ListModel{ ListID = -1, ListName="New List" }) ">New List</option>
</InputSelect>
Run Code Online (Sandbox Code Playgroud)

SelectedList 使用 ListModel 类:

public ListModel SelectedList;
Run Code Online (Sandbox Code Playgroud)

更新:我改用类的 int ID 属性,但仍然遇到相同的错误。所以我不知道原因是什么。

更新 2:这就是问题:value="@null"。我会找到一种方法来解决这个问题,但自从 int? 可为空我仍然想知道实际问题是什么。

.net c# blazor blazor-server-side

3
推荐指数
1
解决办法
2534
查看次数

Blazor 三元运算符,结果为 HTML

在做了很长时间的 React 之后,我正在使用 Blazor,而且我真的不明白(据我所知)Blazor 在代码中动态组合 HTML 结果的能力非常有限。举一个简单的例子,我有一个用户个人资料,我想显示一个图标/徽章来演示用户的非活动状态。这样做的“正确”方法是什么?我有这样的东西(在伪代码中,因为我似乎无法让解释器接受我的尝试):

@(UserViewModel.IsInactive == true ? "<i class=\"ps-2 fas fa-seal-exclamation\" style=\"color: yellow\" title=\"Inactive\"></i>" : "")
Run Code Online (Sandbox Code Playgroud)

这只是返回实际的 HTML,但不会渲染它。

我经常看到的另一个类似的情况是有条件地显示一行文本,例如如果地址存在,则显示它,但否则不显示该行:

@(UserViewModel.Address?.Address1 ? UserViewModel.Address.Address1 + "<br/>" : "")
Run Code Online (Sandbox Code Playgroud)

这可行,但似乎有点尴尬——是否可以在代码隐藏的 C# 页面 ( ) 中执行一个MyComponent.blazor.cs仅返回呈现的 HTML 的函数?如果可能的话,我还没有找到正确的返回类型,并且它总是出错。在 React 中,我会编写许多小辅助函数来根据传入的参数或对象返回 HTML——我不知道如何在 Blazor 中做到这一点。

c# blazor blazor-server-side

3
推荐指数
1
解决办法
1605
查看次数