本指南旨在帮助开发者在Windows 10 Pro操作系统上搭建一个适合开发的网站或应用程序环境。将使用Microsoft IIS和Microsoft SQL Server 2014作为示例。请注意,本文不适用于生产环境,仅供开发和学习使用。
将不提供截图,但会在后续更新中添加。请持续关注本页面。
自Visual Studio 2012起,微软引入了IIS的轻量级版本——IIS Express。虽然在开发过程中使用调试器(F5)运行解决方案并捕获错误非常方便,但为了在开发周期中模拟真实情况,选择使用完全托管的IIS版本而非Express版本。
本文需要已经安装了以下软件:
请记住,以下设置仅适用于开发/内部使用,不适用于生产环境。可以将其作为指南,但必须根据设置/要求进行适当的替换。
打开IIS管理控制台(快捷方式:开始 -> 运行 -> inetmgr)。
在左侧选择“应用程序池”,然后在中间找到网站/应用程序正在运行的应用程序池。右键单击并选择“高级设置”。
确保“Managed Pipeline Mode”设置为“Integrated”。不再使用经典管道,除非知道自己在做什么,否则不应该使用它!
向下滚动列表,直到看到“Identity”设置。点击“...”按钮并选择想要使用的帐户。对于本文,将使用“Network Service”帐户,它将允许拥有所需的所有权限,而不会过多地暴露系统。请阅读有关“Network Service”帐户以及其他可用帐户的信息。
如果系统连接到AD,可能需要咨询系统管理员。根据经验,曾在不允许使用“Network Service”帐户的AD机器上工作过。
现在点击“确定”,然后再次点击“确定”。现在已经配置了应用程序池。
在左侧展开“站点”,然后选择需要配置的网站/应用程序。
双击“身份验证”磁贴。确保以下设置:
这也取决于要求,所以可能与此处不同。
右键单击“匿名身份验证”并选择“编辑”。
将身份更改为“应用程序池身份”。
以上应该使应用程序/网站处于IIS的工作状态。可能仍然无法访问它,所以请继续阅读本文的其余部分。
作为标准做法,所有的网站/应用程序(统称为“站点”)都放置在默认的IIS托管目录中,即C:\wwwroot\inetpub。
使用Windows资源管理器前往托管目录。
右键单击站点文件夹,然后选择“属性”。
在“安全”选项卡中,为在IIS中选择的帐户授予以下权限(对于,是NetworkService)。如果帐户不在顶部的列表中,请确保首先将其添加。
注意:可能希望考虑使用高级安全编辑器,以启用安全对象的传播到所有子项。这将确保在根目录内创建的任何新文件或目录都将从其父对象继承权限。这确实使一切变得更容易 - 对于本文,实际上不需要它,所以不会讨论它。如有疑问,请随时提问,会回复。
从这里开始,将看到站点无法访问或与数据库引擎通信。为什么?因为它没有所需的权限。现在有两种方法可以做到这一点,每种方法都有其自己的优缺点;简而言之:
如果选择使用这种方法,请考虑每次添加新数据库时,都需要去配置该数据库的权限。如果需要每周配置数据库权限,这可能会变得相当繁琐。
打开SQL ServerManagement Studio(快捷方式:开始 -> 运行 -> ssms)。
在提示时连接。
在左侧展开“安全性”,然后展开“登录名”。
如果没有列出网络服务(应该是NT AUTHORITY\NETWORK SERVICE):
db_datareader
db_datawriter
public
现在点击“确定”。
如果已经有网络服务帐户列出,请编辑该登录条目,然后按照上面的步骤(5-9)进行。
对于引擎级别来说,这就是全部。仍然需要将服务帐户添加到最初选择的每个数据库中,如步骤6中所述。所以:
服务帐户应该在那里列出。右键单击并“属性”服务帐户(对于,是NT AUTHORITY\NETWORK SERVICE)。
在左侧选择“可安全”选项卡。
点击“搜索”按钮。
选择“特定对象”,然后点击“确定”。
现在点击“对象类型”按钮。
向下滚动并勾选架构。点击“确定”。
在下面的文本框中,输入要授予访问权限的架构(与步骤7中相同)。在例子中,将是dbo。点击“确定”。
在底部,选择想要为该数据库授予的所有权限。在例子中,需要对数据库有相当广泛的访问权限,所以将选择这些权限:
Alter
Control
Create Sequence
Delete
Execute
Insert
References
Select
Update
现在点击“确定”。
重复上述步骤,为每个选定的数据库进行操作。
打开SQL ServerManagement Studio(快捷方式:开始 -> 运行 -> ssms)。
在提示时连接。
在左侧展开“安全性”,然后展开“登录名”。
如果没有列出网络服务(应该是NT AUTHORITY\NETWORK SERVICE):
对于引擎级别来说,这就是全部。