0

我有一个最初使用 LocalDb 的 CodeFirst Web 应用程序。我将连接字符串更改为:

<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SqlExpress;Initial Catalog=aspnet-BatchFindings;Integrated Security=True" />

我使用服务器资源管理器创建了适当的数据库。

我正在使用 WebDeploy 发布到运行 IIS8 的 Windows Server 2012 实例。

发布后,我无法使用该应用程序;它没有数据库的权限。然后我将身份更改为用户帐户,现在我没有收到数据库错误。除了应用程序似乎没有将任何数据保存到数据库中。我完全不知所措-感谢任何帮助!

回顾:实体框架,Code First Web 部署到 IIS 8 自定义应用程序池,身份设置为用户帐户

数据未存储在数据库中。

编辑:我希望能够简单地使用 Web Deploy 并让它使用自己的数据库(因此它不会从我的数据库中获取测试数据),但这太令人沮丧了!我正在发布,连接字符串应该可以工作,不知道我哪里出错了。

4

2 回答 2

0

愚蠢的问题,但您是否在数据操作后调用 DbContext SaveChanges() 方法 - 数据保存在测试时有效?

您还可以在测试(调试)和部署(发布版本)时使用不同的 web.config 文件。

于 2013-04-23T21:43:26.927 回答
0

所以我无意中找出了它不保存的原因。由于某种原因,在我的测试环境中一切正常,但是当它被推出时,我需要添加以下行:

db.Entry(obj).State = System.Data.EntityState.Added;

我查看了该教程,该教程似乎可以正常工作,直到它进入该 Grant.sql 文件。Visual Studio 中没有连接选项。

在这种情况下,为了让数据库正常工作,我最终所做的是将我的应用程序池设置为在为此目的创建的用户身份下运行,同时将 Load User Profile 设置为 True。您也可以作为 LocalSystem 运行(只要您创建以下文件夹:C:\Windows\SysWOW64\config\systemprofile\Desktop - 这会诱使系统认为 LocalSystem 帐户是交互式的)。

于 2013-04-24T16:15:30.913 回答