这可能有点具体,但肯定有一些解决方案可供其他人使用。这是我将我的 asp.net 网站从开发环境(MS VS 2010,SQLEXPRESS)移植到 IIS 7 时必须做的事情。
这将解释如何在一个网站(Website1 和 Website2)下设置两个 Web 应用程序。 Website1 将使用 aspnetdb.mdf(由 Visual Studio 创建),Website2 将使用在 MS SQL Server 2008 中手动创建的 website2 数据库。为了便于操作,我们还将将 aspnetdb.mdf 移植到 sql server 2008。
Website1 也将有权在 website2 上创建文件和目录。
第 1 节 IIS 设置
****第 1 步:****
在 wwwroot 中创建一个新文件夹来保存这两个应用程序(我们称之为网站)
为 website2 和 website1 复制粘贴“WebSites”文件夹。
第 2 步:
网站 1 的应用程序池
如果尚未创建,请创建应用程序池并将其配置为使用 .NET 框架 4.0,集成管道模式,我们将其称为 asp4。
网站 2 的应用程序池
目前为网站1使用应用程序池
第 3 步:
添加网站1
在 IIS MANAGER 中,添加新网站。将其物理目录指向我们刚刚复制到根目录下的新文件夹中的 website1(第 1 节,第 1 步)。
为 website1 选择应用程序池,请参阅第 1 节,第 2 步。
我们将站点名称设置为与物理目录(website1)相同。
验证其他要求,第 2 节网站 1 数据库设置和 IIS 文件夹权限。
添加网站2
在 IIS 管理器中,右键单击我们刚刚创建的新网站应用程序,选择“添加虚拟目录”。
将我们复制到包含两个应用程序的 wwwroot 上的新文件夹中的 website2 文件夹的物理路径设置为,请参阅第 1 节,第 1 步。
转换为应用程序并为 website1 选择应用程序池,参见第 1 节,第 2 步。
我们将别名设置为与物理路径文件夹website1相同。
目前,没有要通过的连接要求。
验证其他要求第 3 节 - website2 website2 的数据库设置
第 2 节 website1 数据库设置和 IIS 文件夹权限
步骤 1 aspnetdb.mdf 调整:
注意:从现在开始可能只使用最新的 aspnetdb.bak 文件。
通过右键单击数据库并附加数据库,将 aspnetdb.mdf 附加到 ms sql server。
第 2 步 - IIS 用户登录
如果未设置用户 - 第 4 节,第 1 步为 IIS 用户创建数据库登录
如果权限未设置 - 第 4 节,第 2 步在 db 上为 IIS USER 设置权限
代码调整/验证
需要在 web.config 中删除 MS VS 在连接字符串中自动生成的用户实例变量 (;User Instance=true)。
- <remove name="ApplicationServices"/>
- Not 100% neccessary but this will make it more scalable accross platforms
- In the web.config, make sure we are using the database we attached / restored on MS SQL Server.
- "data source=.\SQLEXPRESS;Integrated Security=SSPI;initial catalog=aspnetdb" (because we renamed it aspnetdb)
第 3 部分 - website2 为 website2 设置数据库
确保数据库已在 MS SQL SERVER 上恢复
数据库要求
第 1 步
如果未设置用户 - 第 4 节,步骤 1 为 IIS 用户创建数据库登录
第 2 步
如果权限未设置 - 第 4 节,第 2 步在 db 上为 IIS USER 设置权限
步骤 3 文件夹权限(添加子站点 website2 后)
设置文件夹权限:由于 website1 写入文件并在 website2 中创建文件夹,(它设置为始终在 website2 文件夹的父文件夹中查找)我们需要给服务器 IIS_IUSRS ,我们的是 (IIS_IUSRS(MIKE71\IIS_IUSRS) 权限.
在 IIS 中,右键单击嵌套应用程序网站 2 并选择编辑权限。确保为 IIS_IUSRS 勾选了修改和写入权限。
第 4 节 - 将 IIS 用户添加到数据库并授予权限
步骤 0 附加和恢复数据库
- 如果数据库尚未附加到 MS SQL Server,我们需要附加 .mdf 文件。
- 我们可以通过右键单击数据库来恢复数据库,恢复到我们的附加数据库,然后从提供的 .Bak 文件恢复。
- 如果由于数据库定义(从头开始创建一个干净的定义)而无法恢复,请尝试:
恢复数据库 trimweb
从磁盘 = 'C:\trimweb.bak'
用替换
第 1 步为 IIS USER 创建数据库登录
为什么?需要创建并允许IIS APPOOL\asp4用户拥有数据库权限,设置为数据读取器(第一节第二步创建的应用程序池)
如何:在MS SQL SERVER的安全部分,需要右击用户,添加IIS APPPOOL\asp4(IIS APPPOOL\apppoolname,在第一节第二步中创建)。
Add IIS 7 AppPool Identities as SQL Server Logons
第 2 步在数据库上为 IIS USER 设置权限
右键单击数据库名称 (website2 db),然后单击属性。在权限部分添加您刚刚在第 4 部分第 1 步中创建的 APPPOOL 用户,请务必授予他执行和选择权限。
注意: Website1 也需要执行、选择、删除、插入权限。 Website2 也在使用这个不应该的应用程序池,因为我们不需要让用户在 trimdynamics 应用程序中拥有这种功能。我们可以分离应用程序池,以便我们的修剪动态 IIS USRS 仅获得执行和选择权限。