wsHTTPBinding через HTTPS вызывает ошибку 400 «Неверный запрос»

Я пытался создать простую службу, позволяющую регистрировать сообщения на удаленном сервере через WCF, и все работало нормально, пока я не опубликовал службу в реальной среде, использующей HTTPS.

После некоторого поиска я обнаружил, что мне нужно изменить свой ServiceConfig для учета другого протокола. Я использовал комбинацию этих двух статей:

  1. Как настроить службы WCF для работы через HTTPS без привязки HTTP?
  2. Привязки WCF, необходимые для HTTPS< /а>

Внеся рекомендуемые изменения в мою конфигурацию, я, кажется, нахожусь в состоянии, когда я могу добавить действующую службу в качестве ссылки WCF в VS2010, но когда я использую IE для перехода к службе или адресу mex, я постоянно получаю ошибка «HTTP 400 Bad Request».

Что касается использования сервиса, я могу его успешно запустить, но мекс просто не хочет работать через IE.

Сама служба размещается на Windows Server 2003 R2 Standard Edition SP2 с IIS 6.0 без балансировки нагрузки.

На данный момент я действительно в растерянности, я потратил 3-4 дня на то, чтобы возиться с этим, но, похоже, я не могу добиться никакого прогресса. Поэтому любая помощь будет принята с благодарностью.

См. ниже соответствующую конфигурацию службы сервера:

  <system.serviceModel> 
    <services>
      <service name="mycorp.Callback.SecPayService" behaviorConfiguration="mycorp.Callback.SecPayServiceBehavior">
         <endpoint address="https://myserver.co.uk/SecPay/SecPayService.svc"
                   binding="wsHttpBinding" bindingConfiguration="TransportBinding" 
                   contract="mycorp.Callback.ISecPayService"/>      
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />        
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mycorp.Callback.SecPayServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>

person VikingProgrammer    schedule 13.04.2012    source источник
comment
Можете ли вы опубликовать свою конфигурацию WCF на стороне клиента? Где размещается сервис? ИИС? Служба Windows? Другой?   -  person DaveRead    schedule 13.04.2012
comment
Обновлен с информацией на стороне клиента. Я попросил менеджера сервера предоставить подробности IIS.   -  person VikingProgrammer    schedule 13.04.2012
comment
Если вы размещаете свою службу в IIS, просто оставьте значение адреса элементов конечной точки пустым, поскольку адрес для конечной точки назначается IIS.   -  person Rajesh    schedule 13.04.2012
comment
@Rajesh, удалив жестко закодированный адрес конечной точки, решил проблему. Опубликуйте его как фактический ответ, а не комментарий, и я отмечу его как решение. Большое спасибо.   -  person VikingProgrammer    schedule 13.04.2012
comment
@David_Jarrett: я разместил свой комментарий в качестве ответа. Спасибо   -  person Rajesh    schedule 13.04.2012


Ответы (1)


Если вы размещаете свою службу в IIS, просто укажите значение адреса элементов конечной точки в пустую строку, поскольку адрес для конечной точки назначается IIS.

person Rajesh    schedule 13.04.2012
comment
Это решило мою проблему, оказалось, что при просмотре MEX сервер возвращал myserver1.co.uk чем myserver.co.uk, что означало, что мешала жестко запрограммированная привязка. Спасибо, Радж. - person VikingProgrammer; 16.04.2012