如何使用| datadirectory |用ASP.NET核心在AppSettings.json中替换字符串



我是ASP.NET Core的新手,我想做的任务应该非常简单。使用Visual Studio,我正在尝试将.MDF文件链接到我的项目作为本地数据库。由于我想让它适用于几台计算机,因此我需要从AppSettings.json找到数据目录文件夹路径。因此,经过一些研究,最好的方法是使用 | datadirectory | 替换字符串。

问题在于我的网站无法以这种方式到达我的MDF文件,并且会生成一个参数exception:" key'actact dectactdbfilename'" 的无效值。尽管我发现了有关此问题的一些主题,但这些都没有回答我的问题。

我已经尝试使用完整的路径来查找我的文件,但是正如我所说,我需要从几台计算机中找到它。

这是startup.cs和appsettings.json

startup.cs

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            string path = Path.Combine(Directory.GetCurrentDirectory(), "App_Data");
            AppDomain.CurrentDomain.SetData("DataDirectory", path);
            Configuration = configuration;
        }
        public IConfiguration Configuration { get; }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));
            services.AddDefaultIdentity<IdentityUser>()
                .AddEntityFrameworkStores<ApplicationDbContext>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }
        [...]
   }

我的连接字符串, AppSettings.json

"ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\mssqllocaldb;AttachDbFilename=|DataDirectory|\aspnet-MatrixCalculatorApp-db.mdf;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

如果需要,我也可以提供堆栈跟踪。

预先感谢您的帮助。

好吧,如果某人仍然有与我相同的问题,我只是找到了一个解决方案:

您可以简单地用数据文件夹的路径替换字符串的出现。

startup.cs

string path = Path.Combine(Directory.GetCurrentDirectory(), "App_Data");
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection").Replace("[DataDirectory]", path)));
            services.AddDefaultIdentity<IdentityUser>()

AppSettings.json

"DefaultConnection": "Server=(localdb)\mssqllocaldb;AttachDbFilename=[DataDirectory]\aspnet-MatrixCalculatorApp-db.mdf;Trusted_Connection=True;MultipleActiveResultSets=true"

我更换| datadirectory |使用 [DATADIRECTORY] 避免使用替换字符串的程序混淆。但是,如果某人的解释比我更好,那就很高兴。

相关内容

  • 没有找到相关文章

最新更新