部署指南:怎样配置一个Web服务器来部署LightSwitch应用程序


[原文发表地址]  Deployment
Guide: How to Configure a Web Server to Host LightSwitch Applications

[原文发表时间] 23 Mar 2011 2:25 PM

注:本篇文章信息适用于LightSwitch Beta 2

Visual Studio LightSwitch应用程序从逻辑上来说是三层架构,由客户端、应用程序服务(也就是中间层)和数据层(即数据库)组成。LightSwitch应用程序可以通过数种不同的方式被部署到不同的环境中。你可以将客户端部署成一个桌面应用程序或(基于浏览器的)Web应用程序。一个桌面应用程序在Windows机器上会在浏览器外运行,却可以访问机器内存和其他正在运行的应用程序。用户可以像启动其他的Windows应用程序一样从一个桌面图标来启动应用程序。虽然在浏览器内运行的Web应用程序并没有完全访问机器上其他存储空间或其他应用程序的权限,但是Web应用程序能支持多种浏览器,并且在Mac和Windows计算机上都能运行。

clip_image001

如果选择了桌面应用程序,你可以在同一台机器上本地部署应用程序。这就生成了一个两层的应用程序,其所有组件(客户端+中间层)都安装在用户的Windows计算机上,而且直接与数据库相连。这种部署避免了对web服务器的需求,非常适合在一个局域网或工作组上做较小范围的部署。在这种情况下,只要客户端全都能直接连接,数据库可以部署在其中任意一个上。

桌面和基于浏览器的客户均可部署在你自己的(网络服务器提供商)(IIS)或云上。这就搭建了一个三层应用程序,其中安装在客户端的只是一个很小的Silverlight 运行时 ,应用程序服务(中间层)运行在web服务器上。如果你有很多用户,对扩充性有更多需求或者你需要通过互联网支持基于Web浏览器的客户,那么网络部署是很合适的。

clip_image002

clip_image003

如果你没有自己的web服务器或IT部门,那么部署到云是一个很有吸引力的选择。请查看这里的价格选项和 免费的 Azure 试用。上周,Andy在团队博客上发表了一篇关于如何发布 LightSwitch应用程序到云的文章,如果你错过了的话请看:

步骤: 如何发布到 Windows Azure

在这篇文章中我不仅要将演示如何搭建你自己的服务器来部署应用程序而且会讲述一些配置技巧。首先我将逐步详细讲解从LightSwitch 开发环境中直接自动配置一个web服务器来部署,然后介绍应用程序的实际发布。随后我也会演示如何为手动部署创建安装包,比如部署到一个外部的web主机。我们也会涵盖Windows 身份验证和窗体身份认证。最后我将会给你们一些不但适用于LightSwitch应用程序而且适用于任何连接到数据库的网站或服务的关于创建自己的应用程序池、集成安全性的小技巧。以下是我们将要逐步介绍的:

配置一台服务器以进行部署

· 使用Web Platform Installer 来安装依赖软件。

· 检查IIS设置、功能和服务状态

· 配置你的Web站点和数据库

部署你的LightSwitch应用程序

· 直接发布一个LightSwitch应用程序

· 创建并安装一个LightSwitch应用程序包

· 使用窗体身份验证部署应用程序

· 使用Windows身份验证部署应用程序

配置技巧

· 配置应用程序池&安全考虑

· 使用Windows 集成安全模式链接数据库

· 使用安全套接字层(SSL)

记住一旦搭建了服务器,你就可以在LightSwitch中部署多个应用程序。如果你还没有一台机器,或没有专业的知识来自己搭建,那么我建议为小程序选择一个两层的部署,或者查看我上面提到的云。这篇文章是针对开那些想搭建LightSwitch Web 应用程序的开发人员和IT专业人士的。

那么我们现在就开始吧!

使用Web Platform Installer 来安装依赖软件

你可以使用Web 平台安装程序(WPI)来快速搭建一个Windows 服务器。它允许你选择IIS,.NET Framework 4,及其他全部的免费应用程序和组件。 先决条件包括正确安装IIS和Web部署服务以及安装SQL Server Express。这样很容易地就在一台机器上配置了所需要的所有东西。尽管你可以手动做这些,但是我极力推荐你用WPI这种方法搭建你的LightSwitch服务器。 你可以在Windows Server 2008、Windows 7、和Windows Server 2003上运行Web平台安装程序。它支持IIS 7.0和 IIS 6.0。如果服务器已经安装了IIS 6.0,就不用安装IIS 7.0 了。(注意LightSwitch Beta 2依赖项与Beta 1 相比已经有了变更,他们已经不再包含任何加载到全局程序集缓存的程序集。所以在安装Beta 2先决条件之前必须卸载所有的Beta 1 先决条件)。

首先,在顶端的Web 平台选项卡上选择Products 链接,然后选择左边的Tools点击添加Visual Studio LightSwitch Beta 2 ServerRuntime。这就会安装IIS, .NET Framework 4, SQL Server Express 2008 和 SQL Server Management Studio,因此你不用再选择这些组件了。

image

安装程序会跳过已经安装的组件。LightSwitch服务器先决条件不安装任何程序集;它们只是确认下服务器已经准备好 ,从而你可以很顺利的部署LightSwitch应用程序。这是安装的重要依赖项分解:

· 正确开启ASP.NET, Windows 认证, 管理服务 等功能的IIS 7。

· .NET Framework 4 + SP1

· Web Deployment Tool 1.1和msdeploy 提供程序,这样你就可以从LightSwitch 开发环境马上部署到服务器

· SQL Server Express 2008 (引擎 & 依赖) 和 SQL Server Management Studio(针对数据库管理)(注:LightSwitch也能和SQL Server 2008 R2 一起使用,但是你需要手动安装那个版本)

这些依赖项也算是已部署的web 程序的订制步骤,LightSwitch 特有的订制。当配置IIS 7时,它们将会:

1. 确保你的程序是在ASP.NET v4.0应用程序池

2. 确保匹配的认证类型针对web应用程序设置好了

3. 当 需要时添加一个系统管理员

安装了这些,当配置后你就不用担心网站的任何手动配置。但是请注意,如果你机器上已经有了.NET Framework 4 并随后安装了IIS(甚至通过WPI),ASP.NET也许没有配置成功。确保你像下面描述的那样核对了IIS 的设置。

点击屏幕下方的“我接受”按钮开始,随后就有提示让你创建一个SQL Server Express 管理员密码。接下来安装器会下载所有的功能并开始安装它们。

.NET Framework安装好之后,你要重启机器然后安装才会继续进行。当你进入了SQL Server Express 2008的安装,你会得到下面的兼容提示信息:

如果做了,只需点击“运行程序”,安装结束后,安装SQL Server 2008 服务包 1

用30分钟来下载所有的东西(通过一个快速的连接)并安装。

核对 IIS 的设置, 功能 和服务
IIS安装之后,你要确保一些功能能够支持LightSwitch(或任一个.NET web应用程序)。如果你在一台干净的机器上安装了Visual Studio LightSwitch Server Prerequisites , 那么这些这些功能也应该可以使用。
Windows 2008中你可以通过管理工具-〉服务器管理,在服务器角色下点击Web服务器(IIS)来检查设置。然后下移到角色服务。(在Windows 7中,打开“添加或删除程序”,选择“打开/关闭Windows功能”,就能看到这个信息)你要确保安装IIS 管理服务,应用程序开发:ASP.NET(当检查时这就会自动添加额外的服务),在安全选项卡下:Windows认证。
image

接下来我们要确保Web Deployment Agent Service是启动的。打开服务,在Web Deployment Agent Service上右击,如果它还没启动的话选择启动。

image

配置你的Web 站点 和数据库
现在在开始之前,我们应该确保我们可以浏览到默认的站点。首先,在web服务器上,你应该能够打开一个浏览器来浏览http://localhost, 并能看到IIS 7 logo。如果不能的话,某些东西可能阻碍了安装,你应该去IIS 论坛 或者 LightSwitch 论坛 上解决问题。接下来我们应该检测下其他的计算机能接入到默认站点。为了让网络上的其他计算机能够进入到IIS,你需要使得Windows防火墙里的入站规则下的“世界范围的服务(HTTP Traffic-In)”可用。当向机器上添加Web服务器角色(这在你安装上面的预备条件时进行)。
这时你应该能够在网络上的另一台机器上导航http://<servername> IIS 7 logo。(注:如果还不能使它工作试着使用机器的IP地址而不是名字)
clip_image008

接下来你要确保你想部署的LightSwitch应用程序数据库SQL Server在网络上是可用的(它保存了你的应用程序数据,用户名,许可和规则)。在本例中,我将要把数据库部署到和web服务器相同的机器上,但是你可以把数据库放在运行SQL Server或Express的机器上。对于较小的,内部的,部门使用的应用程序,在相同的机器上运行就可以了。SQL 2008 Express是以上面的预备条件安装的,你只需要做一点设置,使得你能够从网络上的另一台机器上连接到它。

打开SQL Server配置管理器,展开SQL Server服务并启动SQL Server浏览器。也许你要右击选择属性来设置开启模式,把Disable 改为其他的设置。SQL Server 浏览器使数据库实例可以在其他机器上看到。这允许你通过<servername>/<instancename> 语法跨过网络连接到 SQL Server。这也允许我们直接从LightSwitch发布数据库。

image

接下来你需要启用通信协议,在“SQLExpress 协议”下启用TCP/IP, 以及命名管道,

在“客户端协议”下启用TCP/IP 以及命名管道。最后,重启SQLEXPRESS服务。

image

image

直接发布一个LightSwitch应用程序

这是一个官方文献,讲如何发布一个LightSwitch应用程序--怎样: 部署一个 3层的 LightSwitch应用程序 。 正如我提到的,有两种方法来配置服务器,一种是直接从LightSwitch开发环境做,而另一种方法是创建一个应用程序包手动地把它安装到服务器上。这两种方法我都将要演示下。

既然安装了服务器,Web Deployment Agent service正在运行并远程接入到SQL Server ,我们可以直接从LightSwitch 开发环境发布应用程序。对于这第一个例子,我将演示如何部署没有任何基于角色的安全性应用程序。一会儿就会讲到。返回到LightSwitch开发机器上,在解决方案管理器下的工程上右击,选择“发布”。

image

发布向导打开了,第一个问题是你想要什么类型的 客户应用程序,桌面或Web (基于浏览器的)。对于这个例子,我将选择桌面。

image

下面我们决定在何处部署应用程序服务(中间层)以及怎样部署。我打算部署到我们刚才创建的服务器上,只需选择“IIS Server” 选项。对于这第一个例子,我也选择把应用程序直接部署到服务器上,由于我之前已经安装了必备条件,我将使选项框 为选中状态“IIS Server已经安装了LightSwitch部署必备条件”

image

接下来我们要指定服务器的细节。敲入服务器地址,并且指定Site/Application。默认情况下,这将会被设置为Site/Application, 除非除了默认的那个你还设置了另一个站点要么不要改Site/Application 的默认值。最后,指定一个可以访问服务器的管理员名字和密码。

image

下一步你要为应用程序数据库指定两个连接字符串。第一个是部署向导将要用来创建或更新数据库的连接。这个具体指由每个LightSwitch应用程序保留的固有的应用程序数据库,不管你是否为数据库创建新的表或连接到一个已有数据库,它都存在。务必要填上正确的SQL服务器和实例,在我的例子中名称为LSSERVER\SQLEXPRESS。 兼容性安全是很好的,因为我是数据库的一个管理员,它会通过使用我的Windows帐号连接数据库来安装。不管你指定什么字符串,用户在SQL Server中必须有dbcreator权限。

第二个字符串是应用程序在运行时应用的字符串。中间层组件用这个字符串连接到数据库,它被保存在Web.config文件中。LightSwitch此处会警告我们 不可以使用兼容性安全模式。这是因为web应用程序将要在ASP.NET v4.0应用程序池中被创建,它运行于一个没有数据库访问权限的内建帐号。后面我将演示如何搭建应用程序池,现在点击“创建数据库登录…”按钮为应用程序创建一个登录。这样就创建了一个最低权限的数据库访问帐号。

image

这儿我将明确说明这个应用程序的登录名和密码。

image

下面你指定一个证书来标记用户应用程序(.XAP文件)。这应该是来自于一个值得信赖的认证授权的有效证书,像VeriSign。或者说如果这是一个内部应用程序,那么你或许有了企业部署所用的证书。如果没有给应用程序签名,那么当安装桌面应用程序时用户会看到一个警告信息,而且如果你更新应用程序时它们也不能自动更新。

image

最后一次点击下一步,你将会看到我们描述的所有的设置的总结。如果你再次运行发布向导,你就会被自动带到这个页面,并且所有的设置都会被保存下来。

image

点击发布,几分钟后所有的东西都会被安装在你的远程服务器上。通过查看左下角的Visual Studio LightSwitch, 你可以看到执行的状态。当发布完成后,打开http://<servername>/<applicationname> ,在桌面应用程序的例子中你会看到一个安装按钮。点击它安装并启动桌面应用程序。

image

桌面程序用户会在桌面上看见一个快捷方式,开始采参上也会有一个项目。用户可以通过添加/删除程序来卸载应用程序。

image

创建 并安装一个LightSwitch 应用程序包
有时候你不能直接连接到服务器,你想在它上部署LightSwitch应用程序,所以直接部署不是一个可选项。本例中,你需要在磁盘上创建一个包,你可以把它提交给管理员来手动安装。返回到LightSwitch开发机器,在解决方案管理器的工程上右击,选择发布,单击选中客户端配置选项卡。你可以选择桌面或web-上次我选了桌面,所以这次选择web。

image

再次选择安装了必备条件的IIS server。

image

现在发布显示出来,这次选择“在磁盘上创建一个包”,输入站点名并指定你想创建包的位置。

image

下一页你要指定数据库配置的详细情况。你或者创建一个新的数据库或者指定一个需要更新的数据库。这具体指内置的应用程序数据库,它由每一应用程序保存,无论你为数据创建新的表连接到已有的数据库它都存在。对于应用程序的第一个部署,由于你没有一个创建好的,你要选择生成新数据库选项。如果你要发布一篇更新到已有的应用程序,那么选择更新已有的选项。

image

就像在直接部署的例子中一样,你可以指定一个要用的证书来标记客户端应用程序(.XAP文件) 。对于一个web应用程序,这是不必要的。

image

点击下一步,你将会看到我们规定的所有的设置.接下来点击发布,这样将会在指定的发布位置产生一个.ZIP文件包。把那个应用程序包发布到你的web 服务器上,然后打开服务器上的IIS Manager,在默认的web站点右击并选择部署-〉导入应用程序。注意为了能正确地安装包,你需要有机器的管理员权限。

image

浏览下我们已经创建的.ZIP应用程序包,然后点击下一步。包的目录就会展现出来。

image

和部署相同,当安装包时,它将会问你一些数据库的详情。第一个字符串会被用来创建/更新数据库。确保你在连接字符串填上了合适的服务器和实例。我现在填的是LSSERVER\SQLEXPRESS。在次使用兼容性安全是很不错的,因为我是数据库管理员,要安装的话它会用我的windows帐号来连接数据库的。

下面的四个字段是用来创建应用程序运行时使用的连接字符串。中间层组建就使用这种方法来连接数据库的,这种信息是被保存在Web.config文件中的。默认情况下,你不能指定一个兼容性安全账号,因为将要在ASP.NET v4.0应用程序池中创建web应用程序,它以一个内置身份运行,这种身份不能访问数据库。(我将在最后演示如何使用兼容性安模式来搭建你自己的应用程序池)。确认你指定了一个仅有必须权限的帐号,通过该账号你可以进入到需要的数据库。image

点击下一步,这样就会开始安装了,而且是相当快的。当结束后,就可以在浏览器中访问网站了。因为这次我是选择了把它作为一个web应用程序来部署的,所以LightSwitch应用程序将会像浏览器中的其他web站点一样打开。

image

部署使用窗体身份认证的应用程序

访问控制(核对用户的访问权限)是LightSwitch一个重要的功能,在所有的屏幕、查询以及实体表中有内建的钩子可以很方便的检查用户权限。这里是些查询的库资料。

如何:创建一个基于角色的应用程序

同时我也记得这个视频:

我怎么做: 创建安全来控制用户进入部分的Visual Studio LightSwitch 应用程序?

在项目->属性页,访问控制选项卡上,你可以指定用户权限,以及认证的类型。

image

在此我们定义了资源访问的控制权限, 用户可以在代码中检查当前用户是否有这些权限(关于怎样做的详细内容,请观看上面的视频和文章资料)。你也要指定认证类型,这影响应用程序怎样被执行。服务器上的Web应用程序必须启用相应的IIS认证。

首先让我们浏览下窗体身份认证的步骤。这表示将要在LightSwitch数据库中保存用户名和密码

(LightSwitch使用ASP.NET membership provider model)这种类型的身份认证对基于internet的应用程序是合理的。当你发布使用窗体身份认证的应用程序时,将会有一个Publish Wizard新截面块允许你指定管理员是如何被部署的。

直接部署—窗体身份认证

在直接部署的例子中你会看到一个画面是问你管理员用户名和密码。这和数据库一点关系也没有,所以不用困惑。这仅仅是部署到用户表中的第一个帐号,所以你可以登录到应用程序,开始创建其他的用户和角色。如果你在重新部署(也就是更新)一个已经用窗体身份认证部署过的应用程序,那么选择不再创建应用程序管理员。

image

创建一个应用程序包窗体身份认证

如果你正在磁盘上创建一个包,那么点击发布向导只会问你是否想要创建一个应用程序管理员。如果这是第一次部署,选择yes,不然若你已经做了这一步,那就选择no。当你在服务器上部署包时会被再次问到指定细节。

image

现在当你导出应用程序包时你会需要输入一个附加字段来创建应用程序管理员。(谨记需要服务器上安装应用程序包的话,首先必须成为机器的管理员,但是这些在只指定应用程序的用户表格中被部署的数据。)

image

发布了应用程序之后,不管你是直接还是创建一个包,如果你已经安装了LightSwitch依赖项你就会看到相应的窗体身份认证被搭建在你的web站点上。这是应用程序正常运行必须的。

image

发布了应用程序后,会提示你输入应用程序管理员用户名和密码。

image

部署使用Windows身份认证的应用程序

Windows身份认证适用于位于同一网络或域内的用户,比如像在一个基于内部局域网的业务应用程序的情况。这意味着LightSwitch应用程序没有保存密码,而是使用登录认证并将其传送到应用程序服务器。这种情况下你也可以选择是否想要创建特殊用户和角色或允许任意认证用户访问应用程序。

image

注意如果你在应用程序中定义了权限并在代码中核查这些权限,那么这些权限只会被授予应用程序用户界面指定的用户。“授权任何Windows已认证用户”设置将会奏效,然而用户界面上没有定义的用户不会有任何已定义的权限。考虑Windows认证的两种选项最好的办法是:

· 为我在应用程序中管理的Windows用户授予特殊权限和角色。(这也同样适用于已经选择了Windows认证的情况)

· 同时,允许任意Windows用户访问应用程序的未保护部分。

在任一个例子中,部署和web应用程序配置都是一样的。

直接部署— Windows身份认证

在直接部署的例子中你会看到一个界面要求应用程序管理员用户。这应该是应用程序运行的域上的一个有效用户。再次说明,这仅仅是部署到用户表格的第一个用户,使得他们可以打开应用程序并开始设置其他用户和角色。如果你正在重新部署(即更改 )一个已经通过Windows身份认证部署过的应用程序,那么再次选择不创建应用程序管理员。

image

创建一个应用程序包-- Windows身份认证

如果正在磁盘上创建一个包,只需像上面的窗体身份认证一样,发布向导只会问你是否要创建应用程序管理员。如果这是第一次部署,选择yes,不然的话,如果你已经做过这一步,那么选择no。你会再次被要求明确说明在服务器上部署包时的细节信息。这里是你将应用程序管理用户设定为一个有效域用户的地方。

image

发布了应用程序之后——不管你是否直接发布的还是通过创建一个包发布的——如果你安装了LightSwitch预备条件,你将会看到你的Web站点上已经设置了正确的相应的Windows认证。这是应用程序正常工作的必要条件。

image

当运行应用程序时,在右边角上你会看到已经获得认证的用户。

image

可以了!现在我们具备了如何部署任意类型的LightSwitch应用程序到一个服务器的知识了。:-)

配置应用程序池&安全注意事项

既然我们知道了如何部署桌面和Web应用程序,接下来我将要讲一些关于应用程序池和认证是如何工作的。这将帮助你决定什么是在网络上以主机身份登录 任意一个web应用程序的最佳途径。在部署一个应用程序时,事实上你不用知道太多关于它的信息,因为安装包会为你安装一切的。然而,我认为了解正在进行的操作是一件好事情,尤其是当你正在解决问题时。如果你不在意的话,可以跳过该部分:-)

当在IIS 管理器中创建一个新的站点时,选择将要在其下面运行的应用程序池。当用LigthSwitch部署应用程序时,你的应用程序被部署到ASP.NET v4.0应用程序池。应用程序池使两个辅助进程隔离起来(因此如果一个web应用程序崩溃了,它将不会影响到另一个)但是他们也允许你用不同的身份运行。内置的应用程序池使用它们运行的内置账号。

如果你创建了自己的应用程序池,你可以把它设置成以指定的Windows身份运行,你可以将权限限定为只访问应用程序运行所需的资源的权限。在LightSwitch应用程序的情况下,那个额外的资源是数据库。如果你已经在一个Windows域内了,最好创建一个最低权限域用户,将用户设置为应用程序池的身份,并给那个用户授权访问数据库的权限(也许在另外一台机器上,如果这样的话你将很可能想阅读这个)。

由于我将数据库部署在和IIS同一台机器上,我可以使用一个本地机器账号。打开本地用户和组控制台,创建一个名为的LightSwitchApp的用户。然后将该用户添加到IIS_IUSRS组,以使它有权读取wwwroot下的磁盘上的web应用程序文件。接下来打开IIS 管理器,在应用程序池上右击,选择“添加应用程序池…”为你的应用程序输入一个名字——我把我的应用程序命名为LightSwitchAppPool——选择.NET Framework Version 4,然后点击OK。

image

接下来在LightSwitchAppPool上右击,选择高级设置,把身份改为你刚才创建的账号。(一旦将LightSwitch web应用程序改为运行在这个池上,它将会以这个身份去访问资源。)

image

现在我们就可以设置我们之前部署的LightSwitch应用程序的应用程序池了。在IIS 管理器中,右击Web应用程序,选择管理应用程序—高级设置。这里你可以把应用程序池改为我们刚刚创建的那个。

image

切记,如果你的应用程序文件在物理上被部署到inetpub\wwwroot外的其他路径下,你也要给予LightSwitchApp用户账户读取该目录下文件的权限。因为之前我们用LightSwitch来部署应用程序,所以应用程序位于C:\inetpub\wwwroot\OrderManagement路径下。

如果你的应用程序要使用Windows认证,还差最后一步。当你用一个自定义用户身份作为一个应用程序池身份,在这种情况下你需要用NTLM提供商(非Kerberos)或需要获得Kerberos 认证支持。也可选择用网络服务身份作为应用程序池身份,将那个账号添加到数据库。要使用NTLM提供商(我正要做的),请选择站点,在IIS 管理器的主窗口里的IIS区域下选择认证。选择Windows认证(是开启的),右击,选择“提供商…”,然后将Negotiate下移 到列表的底部。

image

在Web应用程序和数据库间使用Windows兼容的安全性

就像我早前提到的一样,你通常想在web应用程序和数据库之间设置Windows兼容的安全性。因为你不用担心应用程序连接字符串中的用户名和密码的管理,所以这种方法更简单,同时也更安全——现在数据库的用户名和密码将被保存在web应用程序的Web.config干净文本中。只有服务器的管理员才能看到这个文件,但是,也许你不相信有权访问这台机器的其他人。让我们来面对吧,你多疑了. 😉

我们已经将LightSwitchAppPool配置在LightSwitchApp用户身份下运行,因此下一步就是给予该用户访问数据库的权限。打开SQL Server Management Studio,右击安全节点,选择新登录。在General选项卡上指定本地的LightSwitchApp用户账号为登录名,使用Windows 认证。在用户映射页面上核对你想要授权的数据库(我的例子中式OrderManagement.)。至少启用这些角色:aspnet_Membership*, aspnet_Roles*, db_datareader, db_datawriter,和Public。或者可以指定db_owner角色包括这些。

image

由于我们已经将LightSwitchAppPool配置成以LightSwitchApp用户身份运行,现在将web.config中的连接字符串改为使用兼容的安全性,那么中间层会用windows账号连接数据库。在IIS 管理器中,右击web应用程序,选择用资源管理器来导航物理文件(Explore to navigate to the physical folde)。在记事本中打开Web.config,删除uid和密码,添加Integrated Security=SSPI:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings> ... </appSettings>
<connectionStrings>
<add name="_IntrinsicData" connectionString="Data Source.\SQLEXPRESS;Database=OrderManagement;Integrated Security=SSPI;Pooling=True;Connect Timeout=30;User Instance=False" />
</connectionStrings>
<system.web> ...

保存文件,现在再次运行客户端应用程序就一切就绪了,运行在应用程序池中,用Windows兼容的安全性来访问数据库。有一个小技巧,如果在连接到数据库时遇到麻烦,双击字符串,要确保连接到正确的数据库的用户名是db_owner

image

针对LightSwitch应用程序使用安全的套接层(SSL)

为了完满结束这篇文章,我将给出一些关于使用LightSwitch应用程序的安全套接层的注意事项和技巧。目前你们可能已经注意到LightSwitch客户端通过HTTP和服务器交流,它是web服务器和服务器之间的协议。HTTP指定数据以干净的文本传送,这意味着一个网络侦收系统能监控客户和服务器之间的数据交换。在任意web应用程序中——包括LightSwitch程序在内——想要通信安全,就需要使用HTTPS协议将普通的数据隐藏在称为安全套接层的加密通道(SSL)中。

为了把web 应用程序配置为能使用HTTPS,你要使用证书并将它设置为像其他任意安全web站点一样。为了用SSL来部署LightSwitch应用程序,在IIS服务器上不需要使用特别针对LightSwitch的配置文件。SSL设置的更多信息,请参考: 在 IIS 上如何搭建 SSL

一旦开启SSL,则不仅客户端和服务器之间交换的敏感的业务数据,而且使用身份认证时的用户名和密码都会受到保护。当窗体身份认证与服务器暴露在网络中或部署在Azure中的IIS服务器一起使用时,最好使用HTTPS。否则,攻击者很可能篡改密码和冒充用户。在使用Windows认证时,攻击者不管在使用什么协议的情况下都不能篡改密码或冒充用户。但是,除非使用HTTPS,否则在客户端和服务器之间传送的商业数据仍然会遭受监听。(请注意在部署一个两层的应用程序时HTTPS是没必要使用的,因为客户端-服务器通信不会跨网络发生——本例中所有的LightSwitch程序集都部署在同一台机器上。)

也许会有希望同时用HTTPS 和 HTTP协议来部署LightSwitch应用程序的情况发生,比如设想既有内部(防火墙后面)又有外部(internet)两个客户。默认在IIS最近的版本中,默认的Web站点同时监听HTTPS 和 HTTP连接。你也可以通过修改应用程序的Web.config强迫应用程序要求HTTPS,重定向任何即将进行的HTTP和 HTTPS终端连接。

在Web.config的<appSettings>部分可以看到:

<!-- A value of true will indicate http requests should be re-directed to https –>
<add key="Microsoft.LightSwitch.RequireEncryption" value="false" />

将值从“false”设置为“true”。你可以在部署之后在Web.Config中配置,或者部署之前在LightSwitch内部配置。在部署时要找到Web.config,在解决方案资源管理器中转换为文件视图,然后显示所有文件。它将会被放到服务器生成的工程里面。

通过HTTPS通信的服务器依赖于安装的服务器证书来完成两件事。证书验证服务器的身份,也包含用来加密任意要发送到客户的加密信息的密钥。为了让Web浏览器能够信任服务器的身份,服务器证书必须有一个可信任的证书机构(CA)像VeriSign来签名。注意大多的CA负责这种服务,因此在开发阶段服务器通常使用一个由自己生成的、没有签名的——从而不受信赖——证书来测试。

如果你通过HTTPS连接到一个LightSwitch web应用程序,并且那个服务器用的是一个不可信任的证书,行为表现将会取决于你的web浏览器。至少浏览器会告诉你有个证书问题并问你是否要继续。这是部署了一个LightSwitch Web应用程序后会发生的事情。但是,如果你有个LightSwitch 桌面应用程序并想要跨HTTPS使用它,那么你的IIS服务器必须使用一个可靠的证书,因为Silverlight ,LightSwitch不允许桌面应用程序接收来自于不可信任的服务器证书。

为了解决这个问题,你要么通过在客户的证书库中预先安装它强迫web浏览器相信服务器的证书,要么用一个被信赖的证书机构签署的证书来替换服务器的证书。注意你应该在第一次从客户端访问应用程序前执行这些步骤,否则,客户端会显示证书已经更改或被损害了。如果你不小心那么做了,那么你需要卸载(通过添加或删除程序),然后再重新安装客户应用程序。

结束语

我认为关于它的已经涉及到了。不管用什么技术Web应用程序的部署都是一件复杂的事情,但是LightSwitch使得这个更加简单,尤其是当你使用WPI和安装LightSwitch Server预备条件时。你有两种方法来部署。或者直接搭建一个web服务器来通过授予LightSwitch 开发人员管理员权限(这对测试盒升级是极其快捷方便的)直接部署,或可以让它们创建管理员之后能容易安装的包。现在你应该在三层LightSwitch应用程序部署上的专业人员了,所有的应用程序应该可以都顺利运行了。:-)

顺便提下,我正在准备关于一些在三层和Azure部署方面的How Do I的视频,所以请继续关注吧。

用得开心!

Skip to main content