小编Jaa*_*aap的帖子

将视频分块流式传输到客户端

信息:(HTTP/2) Kestrel 托管 Blazor WASM ASP.NET Core 6 预览版 1 / C# 9 项目。

我编写了下面的代码,将视频文件以(实际物理)单独的块的形式从服务器传输到客户端,以防止普通用户在(例如)浏览器的开发工具中一键下载视频。

它实际上有效(请参见代码片段下面的屏幕截图)并且搜索也有效,但我想知道我是否做得正确。我希望我可以使用 SO 来实现这一点,但实际上我正在寻找有关我的代码的帮助、建议和/或评论。过去两周我一直在研究这个代码块,搜索代码片段,阅读文档/博客,现在我终于有了一些有用的东西,但也许我做错了,或者也许我忘记了一些真正重要的东西。这个代码规模是否是我的问题之一。我是否using正确使用了声明?无论如何,代码看起来没问题吗:)

仅供参考:我知道该enableRangeProcessing参数,但据我所知,这在这种情况下不适用。寻求确实有效。

/服务器/控制器/StreamController.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Logging;
using System;
using System.IO;
using System.Threading.Tasks;

namespace Media.Server.Controllers
{
    [Route("[controller]")]
    public class StreamController : ControllerBase
    {
        private readonly IWebHostEnvironment env;
        private readonly ILogger<StreamController> logger;
        public StreamController(ILogger<StreamController> logger, IWebHostEnvironment env)
        {
            this.logger = logger;
            this.env = env;
        }

        [HttpGet("{file}")]
        public async Task GetStream(string file)
        {
            var provider …
Run Code Online (Sandbox Code Playgroud)

c# webassembly asp.net-core blazor

7
推荐指数
0
解决办法
3561
查看次数

使用 Kestrel 在端口 80 上运行多个 ASP.NET Core(3.1x/最新)网站

我正在使用 (ASP).NET Core (3.1x)、C#、Blazor 和 Microsoft Kestrel Web 服务器,我想知道是否可以在一个 Kestrel 实例和端口 80 上运行 2 或 3 个不同的网站(域名) .我真的很想使用Kestrel作为唯一的Web服务器,而不是在它前面使用像nginx这样的代理服务器。

我已经在谷歌上搜索了一段时间的答案,但我找不到这个问题的答案。我正在租用托管服务器空间来运行 Ubuntu 18.04 VPS,我真的很想在这个 VPS 上运行多个网站,而不是租用多个 VPS。我正在考虑某种路由,但我无法弄清楚。

有没有办法使用 Kestrel 并在端口 80 上运行不同的网站?

更新 - 2020 年 2 月 25 日

我已经为此创建了一个Github 问题,长话短说:使用像 Nginx(适用于 Linux)这样的反向代理服务器。只有一个 Kestrel 进程可以在端口 80 上运行,并且没有一个好的方法可以用一个实例来托管多个网站。

更新 - 2021 年 5 月 4 日

现在可以使用 Microsoft 的反向代理“YARP”,它是一个单独的 Kestrel 实例。看我下面的回答。

c# .net-core kestrel-http-server asp.net-core blazor

6
推荐指数
1
解决办法
3635
查看次数

Blazor 模态表单验证:删除表单字段时,您必须单击取消按钮两次以关闭模态

在 Blazor 中,我为 CRUD 使用模态对话框。当我打开一个模态来编辑记录并删除(例如)用户名然后直接单击“取消”按钮时,表单验证仍然会启动。模态不会关闭。

Blazor 取消验证 我需要再次单击取消按钮来关闭模式。

我知道我可以将取消按钮放在 之外EditForm,但是您会在对话框关闭之前看到一条验证消息闪烁。我希望在模态页脚中我的提交按钮旁边有我的取消按钮。

当我按下“取消”按钮时,有什么方法可以覆盖表单验证?而且我宁愿不想使用 JavaScript Interop,而只想使用普通的 Blazor。

工作代码示例:

@page "/cancel"
@using System.ComponentModel.DataAnnotations;

<h3>Cancel Validation</h3>

<button type="submit" class="btn btn-primary" @onclick="Login">Login</button>
<hr />
<p>Status: @status</p>

@if (showModal)
{
    <div class="modal" tabindex="-1" role="dialog" style="display:block" id="taskModal">
        <div class="modal-dialog shadow-lg bg-white rounded" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">Login</h5>
                </div>
                <div class="modal-body">
                    <EditForm Model="user" OnValidSubmit="HandleValidSubmit">
                        <DataAnnotationsValidator />
                        <ValidationSummary />
                        <div class="form-group row">
                            <label class="col-3 col-form-label">Email: </label>
                            <InputText class="col-8 form-control" @bind-Value="user.Email" />
                        </div>
                        <div class="form-group row">
                            <label class="col-3 col-form-label">Password: …
Run Code Online (Sandbox Code Playgroud)

c# blazor

5
推荐指数
1
解决办法
8580
查看次数