Операция базы данных не удалась при обработке запроса. 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>Соответствующие ссылки: редактируйте пул приложений; Pools IIS Pools Clr v4.0 против управляемого кода < /p>Код: Выделить всё
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; } }- Убедитесь, что веб -приложение 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и dotnet-hosting-9.0.7-win.exe , а затем установили оба исполняемых файла. Источник: Скачать .NET 9.0 - OSP.NET CORE SURTION 9.0.7. SQLite DB -файл (который я обнаружил, что он имеет значение), который я процитирую (давайте перейдем непосредственно к ответу, чтобы быть простым):Код: Выделить всё
/> < /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
Вам нужно только [назначить] iis_iusrs и iusr to inetpub. Проверьте папку inetpub на сервере Windows, и я обнаружил, что она еще не добавлена. /> и в разрешении на iis_iusrs и iUsr
I Убедитесь, что эти конфигурации:
Подробнее здесь: https://stackoverflow.com/questions/796 ... g-mode-but