Как протестировать сервис WCF с TransportWithMessageCredential во встроенном веб-сервере VS2010 - PullRequest
5 голосов
/ 22 мая 2011

Я разрабатываю Службу WCF с пользовательским UserNamePasswordValidator с базовым HttpBinding. Эта конфигурация, однако, работает только для привязки HTTPS. Поскольку встроенный в Visual Studio 2010 веб-сервер не поддерживает 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>

Ответы [ 2 ]

4 голосов
/ 22 мая 2011

Используйте IIS для этого тестирования.

Откройте свойства своего проекта, перейдите на вкладку "Интернет", нажмите кнопку-переключатель Use local IIS.Это руководство действительно и для VS2010: Использование Visual Studio 2008 с IIS 7

Если IIS еще не установлен, сначала установите его: Как установить IIS.

Вам необходимо иметь версию Windows выше, чем Windows Home.

Вам также необходимо создать самозаверяющий сертификат для вашего веб-сайта.Это легко сделать в IIS 7: Самоподписанные сертификаты в IIS 7 - простой и наиболее эффективный способ

3 голосов
/ 22 мая 2011

Вы не можете протестировать такую ​​службу WCF в Cassine (встроенный веб-сервер в VS 2010).Вы должны использовать локальный IIS или установить VS 2010 SP1 и загрузить IIS Express , который является легким веб-сервером для разработки ( может заменить Cassini в VS и поддерживает HTTPS с самозаверяющими сертификатами).IIS Express не нуждается в какой-либо конкретной редакции Windows и работает во всех версиях, начиная с Windows XP, но предоставляет те же функции, что и IIS 7.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...