C# 如何为我的asp.net核心mvc编写连接字符串
虽然我看过很多解决方案,但我似乎无法应用或理解如何在我的asp.net核心mvc程序中使用连接字符串 这是我的appsettings.json文件:C# 如何为我的asp.net核心mvc编写连接字符串,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,虽然我看过很多解决方案,但我似乎无法应用或理解如何在我的asp.net核心mvc程序中使用连接字符串 这是我的appsettings.json文件: { "Logging":{ "Debug":{ "LogLevel":{ "Default":"Information" } }, "AllowedHosts":
{
"Logging":{
"Debug":{
"LogLevel":{
"Default":"Information"
}
},
"AllowedHosts":"*",
"ConnectionString":{
"connectionString":"Server=W1571415\\MSSQLSERVER01;Database=***********;UserId=*********;Password=***********;"
}
},
"dependencies":{
"Microsoft.Extensions.Caching.Memory":"1.0.0",
"Microsoft.AspNetCore.Session":"1.0.0"
}
}
我的startup.cs文件代码:
使用HospitalApp.Infrastructure;
使用Microsoft.AspNetCore.Builder;
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Localization;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.Razor;
使用Microsoft.EntityFrameworkCore;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.DependencyInjection;
使用Microsoft.Extensions.Logging;
使用System.Collections.Generic;
利用制度全球化;
//此文件用于应用程序行为
命名空间HospitalApp
{
///
///Startup类包含方法scuh as ConfigureServices,用于配置运行应用程序的环境。
///
公营创业
{
专用只读ILogger\u记录器;
///
///当遇到.UseStartup()时,Program.cs中的控件出现在这里。它使用类型IConfiguration的参数配置和类型ILogger的记录器。
///
公共启动(IConfiguration配置,ILogger记录器)
{
配置=配置;
_记录器=记录器;
}
///
///此方法配置的类型为IConfiguration。
///
公共IConfiguration配置{get;}
///
///此方法由运行时调用。请使用此方法将服务添加到容器中。
///
///服务属于IServiceCollection类型,用于指定收集到服务描述符的契约。
public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});
////services.AddSession(so=>
////{
////so.IdleTimeout=从秒开始的时间跨度(60);
////});
services.AddLocalization(options=>options.ResourcesPath=“Resources”);
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddViewLocalization(
LanguageViewLocationExpanderFormat.Suffix,
选项=>{options.ResourcesPath=“Resources”;})
.AddDataAnnotationsLocalization();
//依赖注入
services.AddSingleton();
//_logger.LogInformation(“添加到服务中的存储”);
services.AddDistributedMemoryCache();//添加IDistributedCache的默认内存实现
services.AddSession();
}
///
///此方法由运行时调用。请使用此方法配置HTTP请求管道。
///
///这提供了确认应用程序请求管道的机制。
///提供有关运行应用程序的webhsoting环境的信息。
///表示用于配置日志记录系统的类型。
///它属于ILogger类型,是记录器的通用接口。
public void Configure(IApplicationBuilder应用程序、IHostingEnvironment环境、ILogger工厂、ILogger记录器)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
AddFile(“Logs/mylog-{Date}.txt”);
_logger.LogInformation(“在开发环境中”);
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
//默认的HSTS值为30天。您可能希望在生产场景中更改此值,请参阅https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
var文化=新列表
{
新文化信息(“en”),
新文化信息(“pt”)
};
app.UseRequestLocalization(选项=>{
options.DefaultRequestCulture=新的RequestCulture(“en-US”);
options.SupportedCultures=文化;
options.supporteducultures=文化;
});
app.UseMvc(路由=>
{
routes.MapRoute(
名称:“默认”,
模板:“{controller=Home}/{action=Index}/{id?}”);
});
}
}
}
我没有使用DBContext文件,所以这里是我的基础结构文件,它包含IDBRepository和DbRepository文件。我必须在dbrepository文件中使用这个连接字符串。那么,如何着手呢
namespace HospitalApp.Infrastructure
{
///
///此类用于与MS SQL Server建立数据连接。
///此处指定的connectionString存储数据库名称,数据源指定服务器名称。
///
公共类DbRepository:IDBRository
{
///这里我需要从APPSETTING.JSON文件中指定连接字符串。
//string connectionString=“集成安全性=SSPI;持久安全性信息=False;初始目录=医院虚拟;数据源=W1571415\\MSSQLSERVER01;应用程序名称=医院”;
字符串连接字符串=@“服务器=W1571415\MSSQLSERVER01;数据库=HospitalDummy;用户Id=hospitaluser;密码=abc@123;";
///
///这个函数
public DbRepository(DbContextOptions<DbRepository> options) : base(options)
{
}
public class DbRepository : IDbRepository
{
private string _connectionString;
public DbRepository(string connection)
{
_connectionString = connection;
}
public string GetConnectionString()
{
return _connectionString;
}
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using HospitalApp.Infrastructure;
namespace Test
{
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
string connectionString = Configuration["ConnectionString:connectionString"];
// this is how a class inheriting dbcontext can be called
// services.AddDbContext<DbRepository>(options => options.UseSqlServer(connectionString));
// or call IDbRepository as a custom service
services.AddScoped<IDbRepository>(repository => new DbRepository(connectionString));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // ... }
}
}
public class HomeController : Controller
{
private readonly IDbRepository _dbrepository;
public HomeController(IDbRepository dbrepository)
{
_dbrepository = dbrepository;
}
[HttpGet]
public ViewResult Home()
{
ViewBag.ConnectionString = _dbrepository.GetConnectionString();
return View("Home");
}
}
<h1>ConnectionString</h1>
<b>@ViewBag.ConnectionString</b>
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
"AllowedHosts": "*",
"ConnectionString": {
"connectionString": "Server=W1571415\\MSSQLSERVER01;Database=***********;UserId=*********;Password=***********;"
},
"dependencies": {
"Microsoft.Extensions.Caching.Memory": "1.0.0",
"Microsoft.AspNetCore.Session": "1.0.0"
}
}