使用客户端、服务器部署解决方案并共享到 azure(Blazor wasm,.net core api)[重复]
Posted
技术标签:
【中文标题】使用客户端、服务器部署解决方案并共享到 azure(Blazor wasm,.net core api)[重复]【英文标题】:Deploy solution with client, server and shared to azure (Blazor wasm, .net core api) [duplicate] 【发布时间】:2021-07-13 18:59:42 【问题描述】:这是我的解决方案:
这是我的客户程序.cs:
public static async Task Main(string[] args)
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddHttpClient("TurismoCascais.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
// Supply HttpClient instances that include access tokens when making requests to the server project
builder.Services.AddScoped(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("TurismoCascais.ServerAPI"));
builder.Services.AddApiAuthorization();
await builder.Build().RunAsync();
这是服务器 startup.cs:
public void ConfigureServices(IServiceCollection services)
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<ApplicationUserModelDB>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUserModelDB, ApplicationDbContext>();
services.AddAuthentication()
.AddIdentityServerJwt();
services.AddControllersWithViews();
services.AddRazorPages();
services.AddAutoMapper(typeof(Startup));
...
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
app.UseWebAssemblyDebugging();
else
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseIdentityServer();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
);
最好的方法是什么?如何在 azure devops 上发布此解决方案?我应该发布服务器应用程序,然后是客户端应用程序吗?我尝试使用 azure static web 应用程序,但是当客户端尝试与服务器通信时出现此错误:
需要帮助...
我在Server项目中右击并选择发布:选择Azure和windows应用服务,配置Azure SQL DB然后控制台输出为:
Publish Succeeded.
Web App was published successfully http://turismocascaisapp.azurewebsites.net/
========== Build: 3 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
Installation of Web App Site extension Microsoft.AspNetCore.AzureAppServices.SiteExtension is in progress...
Restarting the Web App...
Successfully installed Web App extension Microsoft.AspNetCore.AzureAppServices.SiteExtension
Successfully restarted Web App.
然后浏览器弹出:
评论了HTTPSRedirect,因为我没有证书并且仍然无法工作..
【问题讨论】:
如果搜索“将 blazor Web Assembly 发布到 Azure”,会有很多文章。你检查过这些吗? MsDocs 在这里:docs.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/… @MrCakaShaunCurtis 是的,我已经这样做了,将服务器项目与 Visual Studio 一起部署为应用服务,但不起作用,给了我代码 500……我想知道是否有办法发布每个项目一次,而不是一个项目一个项目.. 您不会部署多个项目。如果您的设置正确并在本地运行,您只需部署服务器项目。静态部署意味着没有服务器组件,只是一个为 WASM SPA 启动提供文件的服务点。看起来您有一个 API 服务器 - 我可以看到一个控制器目录等,因此您可能需要部署到应用服务。您将服务器项目部署到应用服务,它会部署所有必要的代码。 @MrCakaShaunCurtis 谢谢不知道部署服务器会部署所有内容,我刚刚这样做,但依赖配置进度需要很长时间。在我尝试使用 SQL Server DB 并且无法正常工作之前,现在正在配置 Azure SQL 数据库并在其上运行了 40 分钟,不知道它是否应该花费那么长时间或者它是否在某个地方被阻止.. @MrCakaShaunCurtis 它不工作,依赖配置已经崩溃,所以我重做整个过程然后发布,然后浏览器弹出一个 http 代码 500.. 【参考方案1】:这不是答案,但没有其他方法可以分享此信息。
我刚刚构建并部署了一个标准模板 Web 程序集项目到 Azure。
您可以查看网站here - https://blazor-cascais.azurewebsites.net/
并且站点为Repo on Github。
如果不查看您的代码,社区将无能为力。
【讨论】:
以上是关于使用客户端、服务器部署解决方案并共享到 azure(Blazor wasm,.net core api)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用本地文件共享中的块将 .NET Core docker 容器部署到 Azure
何时使用 Azure Blob 存储与 Azure 文件共享?
我们如何使用管道将azure devops中的应用程序部署到具有不同订阅和组织的azure app服务