如何在 VS2010 内置 Web 服务器中使用 TransportWithMessageCredential 测试 W
本文关键字:TransportWithMessageCredential 测试 服务器 VS2010 内置 Web | 更新日期: 2023-09-27 17:57:09
我正在开发一个带有 basicHttpBinding 的自定义UserNamePasswordValidator
的 WCF 服务。但是,此配置仅适用于 HTTPS 绑定。由于Visual Studio 2010的内置Web服务器不支持https,因此如何测试我的自定义验证器?我不断收到Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Registered base address schemes are [http].
错误,如果我将 clientCredentialType 设置为 none,错误就会消失,但验证器不会被调用。
下面是我的配置。
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="ServiceErrorHandler" type="company.application.appserver.implementation.ServiceErrorHandlerBehaviorExtensionElement, AppSoftAppServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<bindings>
<basicHttpBinding>
<binding name="SimpleBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="DefaultBehavior" name="company.application.appserver.implementation.AppSoftUpdate">
<endpoint address="udt" binding="basicHttpBinding" bindingConfiguration="SimpleBinding"
name="AppSoftUpdate" bindingNamespace="http://company.application/update/2011/04"
contract="company.application.appserver.interfaces.IAppSoftUpdate" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
name="AppSoftUpdateMex" bindingNamespace="http://company.application/update/2011/04"
contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="DefaultBehavior" name="company.application.appserver.implementation.AppSoftTransaction">
<endpoint address="udt" binding="basicHttpBinding" bindingConfiguration="SimpleBinding"
name="AppSoftTransacao" bindingNamespace="http://company.application/transaction/2011/04"
contract="company.application.appserver.interfaces.IAppSoftTransacao" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
name="AppSoftTransacaoMex" bindingNamespace="http://company.application/transaction/2011/04"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding"
httpGetBindingConfiguration="" />
<serviceDebug includeExceptionDetailInFaults="true" />
<ServiceErrorHandler />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType=" company.application.appserver.implementation.AppSoftValidacaoLogin, AppSoftAppServer" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
使用 IIS 进行此测试。
打开您的项目属性,转到 Web 选项卡,点击Use local IIS
单选按钮。本手册也适用于VS2010:将Visual Studio 2008与IIS 7配合使用
如果尚未安装 IIS,请先安装它:如何安装 IIS。
您需要拥有高于Windows Home的Windows版本。
您还需要为您的网站创建自签名证书。这在 IIS 7 中很容易做到:IIS 7 上的自签名证书 – 简单和最有效的方法
您无法在 Cassine(VS 2010 中的内置 Web 服务器)中测试此类 WCF 服务。您必须使用本地IIS或安装VS 2010 SP1并下载IIS Express,这是用于开发的轻量级Web服务器(可以取代VS中的Cassini并支持具有自签名证书的HTTPS)。IIS Express不需要任何特定的Windows版本,它适用于自Windows XP以来的所有版本,但它提供与IIS 7.5相同的功能。