【问题标题】:Asp.Net Core application runs in IIS Express but not in IIS App DeploymentAsp.Net Core 应用程序在 IIS Express 中运行,但不在 IIS 应用程序部署中
【发布时间】: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 数据库。通常建议你检查数据库和连接字符串。

标签: c# asp.net iis


【解决方案1】:

此错误通常表示客户端找不到 SQL Server 实例。当至少存在以下问题之一时,通常会发生这种情况:

  • 托管 SQL Server 的计算机的名称
  • 实例未解析正确的 IP
  • 未正确指定 TCP 端口号

关于如何解决连接到 SQL Server 数据库引擎的问题,您可以参考此链接:Troubleshoot

【讨论】:

    猜你喜欢
    • 2016-12-13
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2020-07-25
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多