我很难将我的网站从我的本地计算机部署到我的VPS,这是问题,我在我的本地项目中的web配置中使用AttachDBFileName,这是我在网络中唯一的连接字符串应用
<connectionStrings>
<add name="myConnectionString"
connectionString="Data Source=.\SQLEXPRESS;
AttachDBFileName=|DataDirectory|\AssignmentDB.mdf;
Integrated Security=True; User Instance=True;
Database=AssignmentDB.mdf" providerName="System.Data.SqlClient" />
此连接字符串位于我的Web应用程序根目录的web.config中。
我每次都手动部署这个,因为我不知道如何使用msdeploy,这是我到目前为止所尝试的:
每次运行网站并尝试使用任何需要连接到数据库的功能时,我都会收到错误500.
问题是,我已经搜索了这个问题,似乎没有人建议为运行此数据库的所有3个应用程序提供任何明确的配置。
更新
这是我将数据库附加到sql server后尝试的连接字符串。
<add name="myConnectionString" connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=AssignmentDB; Integrated Security=True"
providerName="System.Data.SqlClient" />
我没有收到任何特定的错误消息,它只会将我重定向到错误500页,这就是全部。
更新 - 2
只是为了将来的用户清除它,默认的AppPool将其标识设置为DefaultAppPoolIdentity,我将其更改为localSystem并且它获得了对我的数据库的访问权限:)
答案 0 :(得分:2)
当您部署到主机时,您不应再使用AttachDbFileName
,这适用于本地开发。在您的Web服务器上,应该只有一个数据库副本,您应该通过Initial Catalog
引用数据库名称,而不是MDF文件的物理路径。 User Instance
也不应该是真的。
连接字符串应该以:
开头<add name="myConnectionString"
connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=AssignmentDB;
providerName="System.Data.SqlClient" />
然后,您需要添加User ID
和Password
参数,或使用您已有的Integrated Security = True
。在托管环境中,您很可能已经获得了SQL身份验证凭据,而不是Windows,但我可能错了。您可能还需要指定除.\SQLEXPRESS
以外的服务器名称,因为在托管环境中,您并不总是处理命名实例,它并不总是Express Edition,并且它通常与Web服务器不在同一台计算机上
由于您使用的是Windows身份验证,请确保IIS能够连接到SQL Server。您可以specifying an identity for an application pool / web site或configuring Windows Authentication执行此操作。