我遇到这个问题已经一天多了,所以我决定寻求帮助。
IIS部署错误图片
我可以成功测试我的ASP。从Visual Studio在IIS Express上的。NET项目中,连接字符串工作得很好。此外,当运行位于IIS部署文件夹中的my program.exe时,它也可以完美地连接到localdb。
不幸的是,当使用我的项目的实时IP地址出现错误时,所以我的猜测是它连接到DB,但由于某种原因它无法检索或推送数据给它。
我尝试使用不同的DB连接方法,localdb
,shared localdb
和SQL Express
。没有工作。
我的连接字符串如下: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;"
之后,您需要在DB上创建一个安全用户,如下所示:
IIS APPPOOLnameOfMyAppPool
其中nameOfMyAppPool
是您的网站正在使用的应用程序池的名称。
现在,我所做的,我不确定是否需要,是我给了这个安全用户sysadmin服务器角色,你会在创建这个用户时看到这一点,也在用户映射上,你选择你的DB并给它db_datareader
db_datawriter
和db_owner
。
完成这些操作后,转到您的DB并单击查看其属性,您将需要转到权限并为您刚刚创建的新用户赋予权限:
select delete insert update connect replication execute references control
我想再次提醒,这就是我解决问题的方式,我不确定这些中哪些是真正必要的或不是。
这应该能奏效。