ASP.NET 部署到 IIS 连接到 localdb 但总是显示暂时性故障错误
ASP.NET deployment to IIS connects to localdb but always shows transient failure error
我已经遇到这个问题一天多了,所以我决定寻求帮助。
Picture of the Error in IIS deployment
我可以通过 Visual Studio 在 IIS Express 上成功测试我的 ASP.NET 项目,连接字符串工作正常。此外,当 运行 我的 program.exe 位于 IIS 部署文件夹中时,它也可以完美连接到 localdb。
不幸的是,当使用我项目的实时 IP 地址时出现错误,所以我猜测它正在连接到数据库,但由于某种原因无法检索或推送数据。
我尝试使用不同的数据库连接方法,localdb
、shared localdb
和 SQL Express
。
None 成功了。
我的连接字符串如下:
Server=(localdb)\MSSQLLocalDB;Database=PaymentConnect;Trusted_Connection=True;
我已经尝试将 EnableRetryOnFailure
添加到我的代码中,不幸的是错误仍然存在,在允许的尝试之后它再次失败。
我确实没有将项目部署到 IIS 的经验,也没有 ASP.NET 的经验。如果有人可以帮助我,那就太好了!谢谢!
如果我忘了添加一些东西,请告诉我,以便我更新问题
不幸的是,这个错误是一般性的,它只是说出了点问题,可能是暂时性故障。不过我的问题其实已经解决了,对于和我有同样问题的朋友来说说如何解决。
你应该下载并设置 SQL Express,而不是使用 localdb,它就像一个本地服务器,但与 PC 上的所有用户共享,你将需要它,因为当 IIS 试图打开你的 localdb 时,它实际上会以自己的用户身份这样做,因此 localdb 是不同的。请记住在应用程序上更改您的连接字符串,它应该看起来像这样:"DefaultConnection": "Server=.\SQLEXPRESS;Database=PaymentConnect;Trusted_Connection=True;"
完成之后,您需要像这样在数据库上创建一个安全用户:
IIS APPPOOL\nameOfMyAppPool
其中 nameOfMyAppPool
是您的网站正在使用的应用程序池的名称。
在那之后我所做的,我不确定是否需要,是我给这个安全用户 sysadmin 服务器角色,你会在创建这个用户时看到这个,也在用户映射你 select你的数据库并给它 db_datareader
db_datawriter
和 db_owner
。
完成后转到您的数据库并单击以查看其属性,您将需要转到权限并为您刚刚创建的新用户授予以下权限:
select delete insert update connect replication execute references control
再次提醒一下,我是这样解决问题的,不知道哪些是必要的,哪些不是。
这应该可以解决问题。
我已经遇到这个问题一天多了,所以我决定寻求帮助。
Picture of the Error in IIS deployment
我可以通过 Visual Studio 在 IIS Express 上成功测试我的 ASP.NET 项目,连接字符串工作正常。此外,当 运行 我的 program.exe 位于 IIS 部署文件夹中时,它也可以完美连接到 localdb。
不幸的是,当使用我项目的实时 IP 地址时出现错误,所以我猜测它正在连接到数据库,但由于某种原因无法检索或推送数据。
我尝试使用不同的数据库连接方法,localdb
、shared localdb
和 SQL Express
。
None 成功了。
我的连接字符串如下:
Server=(localdb)\MSSQLLocalDB;Database=PaymentConnect;Trusted_Connection=True;
我已经尝试将 EnableRetryOnFailure
添加到我的代码中,不幸的是错误仍然存在,在允许的尝试之后它再次失败。
我确实没有将项目部署到 IIS 的经验,也没有 ASP.NET 的经验。如果有人可以帮助我,那就太好了!谢谢!
如果我忘了添加一些东西,请告诉我,以便我更新问题
不幸的是,这个错误是一般性的,它只是说出了点问题,可能是暂时性故障。不过我的问题其实已经解决了,对于和我有同样问题的朋友来说说如何解决。
你应该下载并设置 SQL Express,而不是使用 localdb,它就像一个本地服务器,但与 PC 上的所有用户共享,你将需要它,因为当 IIS 试图打开你的 localdb 时,它实际上会以自己的用户身份这样做,因此 localdb 是不同的。请记住在应用程序上更改您的连接字符串,它应该看起来像这样:"DefaultConnection": "Server=.\SQLEXPRESS;Database=PaymentConnect;Trusted_Connection=True;"
完成之后,您需要像这样在数据库上创建一个安全用户:
IIS APPPOOL\nameOfMyAppPool
其中 nameOfMyAppPool
是您的网站正在使用的应用程序池的名称。
在那之后我所做的,我不确定是否需要,是我给这个安全用户 sysadmin 服务器角色,你会在创建这个用户时看到这个,也在用户映射你 select你的数据库并给它 db_datareader
db_datawriter
和 db_owner
。
完成后转到您的数据库并单击以查看其属性,您将需要转到权限并为您刚刚创建的新用户授予以下权限:
select delete insert update connect replication execute references control
再次提醒一下,我是这样解决问题的,不知道哪些是必要的,哪些不是。
这应该可以解决问题。