【发布时间】:2021-08-26 06:30:52
【问题描述】:
我有一个我无法解决的问题,我需要一些帮助。
我目前正在创建一个 ASP.Net Core 应用程序,并使用 Entity Framework 从数据库中获取数据。 在我的简单测试应用程序中,我只是从数据库中搭建模型,并在 appsettings 和 Startup.cs 中添加了连接字符串,如 Microsoft 文档所述。 在控制器中,我只是从表中获取记录并在视图中显示它们。当我在 IIS Express 中运行它时工作正常,但是当我在 IIS 中部署应用程序并尝试调试它时,当代码尝试从表中获取数据时应用程序停止并显示此异常:
Microsoft.Data.SqlClient.SqlException: '网络相关或 建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:SNI_PN11,错误:50 - 本地 发生数据库运行时错误。无法创建自动实例。 有关错误详情,请参阅 Windows 应用程序事件日志。
)'
启动:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<PushNotificationContextContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("PushNotificationContext")));
}
控制器:
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly PushNotificationContextContext _context;
public HomeController(ILogger<HomeController> logger, PushNotificationContextContext context)
{
_logger = logger;
_context = context;
}
public IActionResult Index()
{
HomeModel model = new HomeModel();
model.AppUserList = _context.AppUsers.Take(10).ToList();
return View(model);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
主要问题是一周前我做了一个简单的应用程序,它在 IIS 上运行良好,具有相同的连接字符串。我没有在 SQL Management Studio 中更改任何内容。该应用程序也不会在其他电脑上播放。我知道有类似的问题,但没有一个能解决我的问题。
【问题讨论】:
-
您能否向我们展示您的连接字符串,其中敏感位已编辑?还要检查您的
appsettings.json是否存在 - 具有正确的值 - 在 IIS 网站正在使用的文件夹中。 -
出现此错误的原因有很多。你的数据库文件路径是动态的是 sql 连接字符串吗?
-
这是我在 Appsettings.json 中的连接字符串: "PushNotificationContext": "Data Source=(localdb)\\mssqllocaldb;Database=PushNotificationContext;Trusted_Connection=True;MultipleActiveResultSets=true" ,但是当我部署它,在 IIS 中我将其更改为 //"PushNotificationContext":"Data Source=.;Database=PushNotificationContext;Trusted_Connection=True;MultipleActiveResultSets=true";
-
有本质区别blog.lextudio.com/…
-
本题与IIS无关。这完全是因为您的应用无法连接到其 SQL Server 数据库。通常建议你检查数据库和连接字符串。