信息:(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) 我正在使用 (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 实例。看我下面的回答。
在 Blazor 中,我为 CRUD 使用模态对话框。当我打开一个模态来编辑记录并删除(例如)用户名然后直接单击“取消”按钮时,表单验证仍然会启动。模态不会关闭。
我知道我可以将取消按钮放在 之外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)