65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2012年12月14日

CPOL

4分钟阅读

viewsIcon

13806

downloadIcon

4

一个简单的指南,使用 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。

其他资源:

  1. http://msdn.microsoft.com/cs-cz/library/ms733766.aspx
  2. http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
  3. 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 连接不可用”错误。 这通常可以通过重新启动您的网站来修复。

© . All rights reserved.