小编Joe*_*eyD的帖子

使用身份验证托管的 Blazor Wasm 上的 Azure 500 错误

我在这里完全不知所措。我有一个运行 .net5 的 Blazor WASM 托管,已部署到 Azure 应用服务。当没有数据库时,部署到 Azure 没有问题。它按预期加载并运行。我已经安装了 Identity 和 DBContext。一切都在本地构建并通过本地 SQL 实例正常运行。

在 Azure 上,我创建了一个新的 SQLServer 以及一个 SQL 数据库。在 SQL 数据库防火墙设置中,我有“允许 Azure 服务和资源访问此服务器”以及我的客户端 IP 的规则(不是 Azure 应用程序的 IP)。

对于配置中的应用服务,我有一个名为 DefaultConnection 的 ConnectionString(与 appsettings.json 中相同),其连接字符串与 SQLDatabase 提供的源 AppConfig、类型 SqlAzure 相同

我正在使用 VS2019 在服务器上发布项目(启动项目)发布到 Azure。我选择目标为 Azure -> Azure App Sevices (Windows) 和我的实例名称。配置为Release,目标框架net5.0,DeploymentMode依赖框架,目标运行时可移植。

服务依赖项设置为 AzureSqlDatabase,它使用 ConnectionName DefaultConnection,用户名和密码是在 Azure 上创建的 SQL Server 的管理员用户密码设置,SaveConnectionStringValue 是 Azure 应用程序设置。(这会自动填充上述应用服务配置连接字符串。

当我单击发布时,我在输出中看到所有发布都正确:

Publish Succeeded.
Web App was published successfully http://bbqfriend.azurewebsites.net/
========== Build: 1 succeeded, 0 failed, …
Run Code Online (Sandbox Code Playgroud)

azure serilog blazor .net-5

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

在类库中实例化Identity ApplicationUserManager

我不喜欢Identity的一件事是,必须在希望获取用户信息的控制器中实例化UserManager。在我的项目中,我将所有业务逻辑都移到了DAL类库中,并希望身份也可以存在。

我已经将所有身份类移到DAL类库中(ApplicationRole,ApplicationUser,ApplicationRoleManager,ApplicationSignInManager,ApplicationUserManager,EmailSerivce,SmsService)

我的DataContext继承自IdentityDBContext

public class DataContext : IdentityDbContext<ApplicationUser>
{
    public DataContext()
        : base("DefaultConnection", throwIfV1Schema: false) 
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;
    }

    public static DataContext Create()
    {
        return new DataContext();
    }

    static DataContext()
    {
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, DataContextMigrationsConfiguration>());   
    }
Run Code Online (Sandbox Code Playgroud)

因此,我可以通过数据库上下文访问用户和角色

internal class UserRepository
{
    internal ApplicationUser GetUserById(string id)
    {
        using(var db = new DataContext())
        {
            return db.Users.Where(a => a.Id == id).FirstOrDefault();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我无权访问ApplicationUserManager公开的方法。我正在尝试从用户存储库中访问ApplicationUserManager,但不知道如何实例化ApplciationUserManager类。

在控制器中,其实例化如下

    private ApplicationUserManager _userManager;

    public ApplicationUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-5 asp.net-identity-2

2
推荐指数
1
解决办法
3938
查看次数

找不到 Blazor WASM .Net5 预渲染页面

我已经设置了一个基本的 WASM 托管模板并已转换为以下预渲染

https://jonhilton.net/blazor-wasm-prerendering/#commento-login-box-container

https://chrissainty.com/prerendering-a-client-side-blazor-application/

一切似乎都按预期工作,我可以单击导航链接,它会按预期更改页面。但是,我无法通过 URL 直接导航到页面。如果我输入 localhost:port/Counter 我会得到一个无法找到本地主机页面。当我单击计数器的导航链接时,它显示的 URL 为 localhost:port/Counter。

为什么我无法直接导航到该 URL?

编辑:

以下是一些文件,可帮助您了解正在发生的情况。

这是服务器Startup.cs

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllersWithViews();
            services.AddRazorPages();
        }

        // This method gets called by …
Run Code Online (Sandbox Code Playgroud)

webassembly blazor .net-5

2
推荐指数
1
解决办法
557
查看次数