使用 Web Matrix 将 WCF 服务从 Visual Web Developer Express 转换为 IIS Express





5.00/5 (1投票)
一个简单的指南,使用 Microsoft 的免费工具在更真实的环境中运行 Web 服务。
引言
当您使用内部 Visual Studio 开发服务器开发 WCF Web 服务时,您应该在一个更真实的环境中测试它。据说 IIS Express 在这种情况下是一个不错的选择。
有很多文章/教程介绍如何使用 Visual Studio 图形工具和/或完整 IIS 管理器来完成此操作,这些文章/教程列在下面的其他资源中。 这篇简短的文章是关于如果您只有 Microsoft Visual Web Developer Express Edition 和 IIS Express 而没有这些图形工具,该如何完成此操作。 将使用免费的 Microsoft Web Matrix 2.0 来控制 IIS Express。
所讨论的 VWD Express 版本是 2008,但 2010 应该类似。 IIS Express 版本是 7.5。
其他资源:
- http://msdn.microsoft.com/cs-cz/library/ms733766.aspx
- http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
- http://www.youtube.com/watch?v=mX8quq7MoeI
使用代码
这里附加了一个示例 Visual Web Developer Express 2008 项目。 它在 Microsoft Visual Studio 开发服务器上运行示例生成的 WCF Web 服务。
接下来,将其转换为 Web Matrix 2.0 网站,该网站使用 IIS 7.5 Express 运行相同的 Web 服务。
步骤 1 – 先决条件
假设您有一个可用的 WCF 服务。 测试它的一种方法是运行它(参见图 01)。
从浏览器的地址栏复制地址(它会自动打开),启动 Visual Studio 2008 命令提示符(它随 Visual Studio 一起提供,并设置用于其他工具的路径)并键入
wcftestclient https://:nnnn/YourService.svc (an address from the browser).
在一个图形工具中(参见图 02),您应该看到一个包含 Web 服务操作的合同树。您可以双击一个操作,设置其输入参数(如果有),然后调用它,以查看它是否返回您期望的内容。
步骤 2 – 安装 IIS 7.5 Express 和 Microsoft Web Matrix 2.0
可以通过从 http://www.microsoft.com/web/webmatrix/ 下载安装程序来一步完成。
步骤 3 – 设置端点(可选)
在您的 VWD Express 中,打开您的 web.config 文件并将您的端点的绑定修改为 basicHttpBinding。 根据附加资源 3),这是为了与较旧的目标 IIS 兼容而建议的步骤,并且可以省略。 如果您不确定,请按照以下方式修改您的 web.config 中的 behaviorConfiguration
<service behaviorConfiguration="YourService.YourServiceBehavior"
name="YourServiceNamespace.YourService">
<endpoint address="basic" binding="basicHttpBinding"
contract="YourServiceNamespace.IYourServiceContract">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
更改后,您可以重建 VWD Express 项目并重新测试 Web 服务的功能(参见步骤 1)。
步骤 4 – 将项目转换为 Web Matrix 2.0
不要使用新添加的上下文菜单项“使用 Microsoft WebMatrix 打开为网站”,它显示在 Windows 资源管理器的文件夹中。 这会使您接下来的工作更加复杂。
相反,直接启动 Web Matrix 2.0,单击“模板”、“空网站”并根据需要设置其名称。
显示 Web Matrix 2.0 GUI 后,您可以测试 IIS 7.5 Express 是否工作正常。 在“主页”选项卡中,在您的浏览器中运行 Web,并查看您的系统托盘是否指示 IIS 启动,请参见图 04。
将 YourService.svc 文件复制到项目根目录。
用步骤 3 中修改后的 Web.config 替换根目录中的 Web.config。
在与 App_Data 相同的级别(即在根目录中)创建文件夹 App_Code。 将您的代码隐藏文件 YourService.svc.cs 和合同文件 IYourService.cs 复制到该文件夹。
步骤 5 – 在 Web Matrix 2.0 中修改项目
从 YourService.svc 标记中删除代码隐藏引用。
<%@ ServiceHost Language="C#" Debug="true"
Service="YourServiceNamespace.YourService" CodeBehind="YourService.svc.cs" %>
如果 Web Matrix 以红色下划线标记不正确的标记,请不要感到困惑。 它可以工作。
如果您的 WVD 项目是 .NET 3.5,您将需要注释掉 web.config 中的一些行,因为 WebMatrix 在 .NET 4.0 上运行代码。 当您重新启动修改后的站点并在 Web 浏览器中查看它时,您会发现这一点。 如果列出了相应的错误,请按以下方式修改您的 web.config。
<configSections>
<sectionGroup name="system.web.extensions"
type="System.Web.Configuration.SystemWebExtensionsSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD">
<!--<section name="scriptResourceHandler"
type="System.Web.Configuration.ScriptingScriptResourceHandlerSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,PublicKeyToken=AAAABBBBCCCCDDDD"
requirePermission="false" allowDefinition="MachineToApplication"/>-->
<sectionGroup name="webServices" type="System.Web.Configuration.
ScriptingWebServicesSectionGroup, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD">
<!--<section name="jsonSerialization"
type="System.Web.Configuration. ScriptingJsonSerializationSection,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=AAAABBBBCCCCDDDD" requirePermission="false" allowDefinition="Everywhere"/>-->
<!--<section name="profileService" type="System.Web.Configuration
.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD" requirePermission="false"
allowDefinition="MachineToApplication"/>-->
<!--<section name="authenticationService"
type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD" requirePermission="false"
allowDefinition="MachineToApplication"/>-->
<!--<section name="roleService"
type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=AAAABBBBCCCCDDDD" requirePermission="false"
allowDefinition="MachineToApplication"/>-->
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
之后,您的网站应该显示空白页,没有任何错误。
步骤 6 – 访问您的 Web 服务,现在在 IIS 7.5 Express 上运行
确保 Visual Development 服务器已停止。
您也可以通过关闭 Visual Web Developer Express 来做到这一点。
在 WebMatrix 2.0 中重新启动您的站点,并在您喜欢的浏览器中运行它。 在地址栏中,应该有 https://:nnnn
。 在其后附加 /YourService.svc
并按 Enter。
应该显示 Web 服务欢迎屏幕 – 您可以在 VWD Express 中从 Microsoft Visual Studio 开发服务器运行时看到相同的屏幕。 但现在它在 IIS 7.5 Express 上运行。 恭喜。
步骤 7 – 重新测试托管在 IIS 7.5 Express 上的 Web 服务
启动 WCF 测试客户端(参见步骤 1)并尝试调用 Web 服务操作,以查看它们是否按预期工作。
注释
在运行 IIS 7.5 Express 时,我有时会遇到“Internet 连接不可用”错误。 这通常可以通过重新启动您的网站来修复。