Blazor Web App .net 9: Я могу открывать и управлять базой данных SQLite в режиме отладки, но не в хостинном веб -приложеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Blazor Web App .net 9: Я могу открывать и управлять базой данных SQLite в режиме отладки, но не в хостинном веб -приложе

Сообщение Anonymous »

Сегодня был второй день с тех пор, как я заметил это исключение: < /p>

Операция базы данных не удалась при обработке запроса. SQLiteException: SQLite Ошибка 14: «Невозможно открыть файл базы данных».
Применение существующих миграций может решить эту проблему. Существуют
миграции, которые не были применены к следующей базе данных (S): < /p>
blazorwebappadmincontext < /p>
  • 202507081234561_myarmargementname < />
    20250708123456_myArmentname < />
    20250708123456_myArmentname < />
    20250708123456_myarmayname. />20250709789101_mynewargumentName1.0.0,/li>
    20250710111213_mynewargumentName1.0.2 < /> < /ul>
    Применить Migrations, что на самом деле является кнопкой . Консоль менеджера для применения в ожидании миграций в базу данных: < /p>

    Код: Выделить всё

    PM> Update-Database

    Альтернативно, вы можете применить ожидающие миграции из командной строки в каталоге проекта:

    Код: Выделить всё

    dotnet ef database update


    Примечание: мой пакет хостинга .NET Core на Windows Server установлена ​​Dotnet-hosting-9.0.6-win.exe
    Я не смог применить конкретное решение к этому вопросу, даже если я уже выполнил эти рабочие данные:

    имеет разрешения для чтения и записи:
  • in in in in in in in in on in in in in in in in in in in d Приложение уже использует обновленную модель данных, успешно применяет миграции и обновляет базу данных SQLite: < /p>
    < /li>
    < /ol>

    Код: Выделить всё

    using System.ComponentModel.DataAnnotations;
    
    namespace MyBlazorWebAppName.Models;
    
    public class Admin
    {
    [Key]
    public string? UserID { get; set; }
    public string? Username { get; set; }
    [Required]
    [StringLength(100)]
    [RegularExpression(@"^[A-Z]+[a-zA-Z\s-]*$")]
    public string? GivenName { get; set; }
    public string? MiddleName { get; set; }
    [Required]
    [StringLength(100)]
    [RegularExpression(@"^[A-Z]+[a-zA-Z\s-]*$")]
    public string? FamilyName { get; set; }
    [Required]
    [StringLength(150, MinimumLength = 11)]
    public string? EmailAdd { get; set; }
    [Required]
    [StringLength(100, MinimumLength = 3)]
    [RegularExpression(@"^[A-Z]+[a-zA-Z\s-]*$")]
    public string? RoleType { get; set; }
    }
    
    Соответствующие ссылки: редактируйте пул приложений; Pools IIS Pools Clr v4.0 против управляемого кода < /p>
    • Убедитесь, что веб -приложение Blazor, которое размещено в IIS правильно: < /p>
    • Обеспечение того, чтобы каждая папка и файл, сгенерированные этой командой dotnet publish -configuration release и в {projectory} \ bin \ leprele \ leleish \ leleish \ leleish \ lepred \ leleish \ leleish \ leleish \ leleish \ leleish \ leleish \ leleish \ leleish \ \ Физический путь:
    .

    Код: Выделить всё

    Program.cs
    :

    Код: Выделить всё

    using MyBlazorWebAppName.Components;
    using Microsoft.EntityFrameworkCore;
    using MyBlazorWebAppName.Data;
    
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDbContextFactory(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("BlazorWebAppAdminContext") ?? throw new InvalidOperationException("Connection string 'BlazorWebAppAdminContext' not found.")));
    
    builder.Services.AddQuickGridEntityFrameworkAdapter();
    
    builder.Services.AddDatabaseDeveloperPageExceptionFilter();
    
    // Add services to the container.
    builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
    app.UseExceptionHandler("/Error", createScopeForErrors: true);
    // 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.UseMigrationsEndPoint();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAntiforgery();
    
    app.MapStaticAssets();
    app.MapRazorComponents()
    .AddInteractiveServerRenderMode();
    
    app.Run();
    < /code>
    BlazorWebAppAdminContext.cs
    :

    Код: Выделить всё

    using Microsoft.EntityFrameworkCore;
    
    namespace MyBlazorWebAppName.Data
    {
    public class BlazorWebAppAdminContext(DbContextOptions options) : DbContext(options)
    {
    public DbSet Admin { get; set; } = default!;
    }
    }
    < /code>
    Note: if you find this different from the default generated file's source code after following the tutorial: Build a Blazor movie database app (Overview), it's because I simply followed the code refactoring suggestions provided by the .NET framework. Nevertheless, it's still working in debug mode.
    appsettings.json
    :

    Код: Выделить всё

    {
    "Logging": {
    "LogLevel": {
    "Default": "Information",
    "Microsoft.AspNetCore": "Warning"
    }
    },
    "AllowedHosts": "*",
    "ConnectionStrings": {
    "BlazorWebAppAdminContext": "Data Source=Data\\BlazorWebAppAdminContext-12345679-10111213-141516.db"
    }
    }
    < /code>
    Take note: for reproducible concerns, on the generated file web.config
    , мне нужно было добавить эту конфигурацию, чтобы раскрыть фактическую ошибку, которую я предоставил в самой верхней части этой потоки вопроса:

    Код: Выделить всё

    
    
    < /code>
    Reference: ASP.NET Core deployment to IIS error: Development environment should not be enabled in deployed applications
    Here's the full configuration of web.config
    :

    Код: Выделить всё

    
    
    
    
    
    
    
    
    
    
     />
    
    
    
    < /code>
    So, here are my questions after all these struggles in deploying my Blazor web app (.NET 9 [using Visual Studio Code]) with SQLite to IIS 8.5 on SQL Server 2012 R2 Standard:
    
    [*]Has anybody else resolved the same issue as mine?
    [*]Is this a bug or what?
    [*]Do you see a misconfiguration on the project I am working with?
    [*]Am I missing something here?
    [/list]
    EDIT: I've found out that I was using the incompatible ASP.NET Core Runtime for .NET SDK 9.0.302
    Regarding the given findings, I downloaded the aspnetcore-runtime-9.0.7-win-x64.exe
    и dotnet-hosting-9.0.7-win.exe , а затем установили оба исполняемых файла. Источник: Скачать .NET 9.0 - OSP.NET CORE SURTION 9.0.7. SQLite DB -файл (который я обнаружил, что он имеет значение), который я процитирую (давайте перейдем непосредственно к ответу, чтобы быть простым):

    Вам нужно только [назначить] iis_iusrs и iusr to inetpub. Проверьте папку inetpub на сервере Windows, и я обнаружил, что она еще не добавлена. /> и в разрешении на iis_iusrs и iUsr
    I Убедитесь, что эти конфигурации:


    Подробнее здесь: https://stackoverflow.com/questions/796 ... g-mode-but
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»