使用客户端、服务器部署解决方案并共享到 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服务

多个Azure应用程序,在同一群集上具有与版本无关的通用微服务

17.Azure备份(MARS)代理(上)

Azure App Service 共享托管中断容器启动