Attach7filename与ii7& amp; sql express

时间:2012-03-04 21:59:37

标签: asp.net .net iis iis-7 sql-server-express

我很难将我的网站从我的本地计算机部署到我的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,这是我到目前为止所尝试的:

  • 1-改变连接字符串数千次,没有运气..
  • 2-使用SQL管理将数据库附加到VPS上的sql express 工作室并授予所有登录权限。
  • 3-每次更改后在iis中重新启动网站。

每次运行网站并尝试使用任何需要连接到数据库的功能时,我都会收到错误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并且它获得了对我的数据库的访问权限:)

1 个答案:

答案 0 :(得分:2)

当您部署到主机时,您不应再使用AttachDbFileName,这适用于本地开发。在您的Web服务器上,应该只有一个数据库副本,您应该通过Initial Catalog引用数据库名称,而不是MDF文件的物理路径。 User Instance也不应该是真的。

连接字符串应该以:

开头
<add name="myConnectionString" 
  connectionString="Data Source=.\SQLEXPRESS;
  Initial Catalog=AssignmentDB;
  providerName="System.Data.SqlClient" />

然后,您需要添加User IDPassword参数,或使用您已有的Integrated Security = True。在托管环境中,您很可能已经获得了SQL身份验证凭据,而不是Windows,但我可能错了。您可能还需要指定除.\SQLEXPRESS以外的服务器名称,因为在托管环境中,您并不总是处理命名实例,它并不总是Express Edition,并且它通常与Web服务器不在同一台计算机上

由于您使用的是Windows身份验证,请确保IIS能够连接到SQL Server。您可以specifying an identity for an application pool / web siteconfiguring Windows Authentication执行此操作。