我在中做了一个简单的应用程序,除了我尝试用HTTPS在我的VPS上运行它之外,它大部分工作得很好。当我运行该应用程序时,没有出现错误,websocket似乎成功连接(从Firefox控制台查看),但我无法与网站上的任何组件交互。websocket在尝试与组件交互时也不会发送任何内容,但是它会保持心跳。
我已经做了一个全新的Blazor项目,并遵循了以下指南:https://learn.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/server,但是没有用。
VPS运行在Ubuntu 22.04.1 LTS上,Apache2作为and服务器(尝试使用nginx,没有帮助),Cloudflare作为CA。证书和密钥是正确的,而且不过时。
我正在运行这个虚拟主机(从上面的链接中获取,另外从https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-6.0运行(尝试使用来自第一个链接的配置,但没有工作)。
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
<VirtualHost *:443>
ServerName <serverName>
Protocols h2 http/1.1
ProxyRequests On
ProxyPreserveHost On
ProxyPassMatch ^/_blazor/(.*) http://localhost:5000/_blazor/$1
ProxyPass /_blazor ws://localhost:5000/_blazor
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
SSLCompression off
SSLSessionTickets on
SSLUseStapling off
SSLCertificateFile /home/cf.pem
SSLCertificateKeyFile /home/cf.key
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:>
</VirtualHost>这就是Blazor Server main看起来的样子(我尝试过的注释片段,并没有帮助):
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
//builder.WebHost.ConfigureKestrel(options =>
//{
// options.ConfigureHttpsDefaults(options =>
// {
// var pem = File.ReadAllText(builder.Configuration["PemPath"]).Trim();
// var key = File.ReadAllText(builder.Configuration["KeyPath"]).Trim();
// var crt = X509Certificate2.CreateFromPem(pem, key);
// options.ServerCertificate = crt;
// });
//});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
}
app.UseForwardedHeaders(new() { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });
app.UseAuthentication();
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
}确认:我可以通过HTTPS访问该网站,HTTPS连接是成功的,没有Razor组件与我交互做任何事情。任何关于如何进行的帮助或建议都将不胜感激,谢谢!
发布于 2022-09-20 20:07:26
我已经解决了这个问题。如果其他人遇到类似的问题,请与CA (在我的例子中为Cloudflare)检查一个名为“auto”(或类似的)的设置,以最小化HTML、CSS和Java。帮助我解决问题的那篇文章:https://zimmergren.net/solved-asp-net-core-blazor-web-sites-does-not-work-with-cloudflare-html-minification/
https://stackoverflow.com/questions/73779590
复制相似问题