Я работаю над проектом, который использует службу WCF. Я создал службу, настроил файл web.config, развернул ее на сервере IIS 7. Услуга доступна через HTTPS (на моей машине dev, я сам создал сертификат). Все отлично, когда создается ServiceReference в Visual Studio 2010, он создает клиента, и он отлично работает.подключиться программно к службе WCF через HTTPS
Что мне нужно, чтобы создать клиента программно (нужно немного гибкости), так что, когда я пытаюсь соединить «вручную», он дает мне ошибку вроде этого:
The provided URI scheme 'https' is invalid; expected 'http'. Parameter name: via
Код для веб-сайтов. конфигурации является: (я надеюсь, что нет ничего плохого в нем)
<system.serviceModel>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurity" contract="WcfService1.IService1" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WcfService1.Service1Behavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
процедуру я написал для доступа к службе WCF является:
void proc()
{
string ADRESASSL = "https://localhost/ServiciuSSLwsBind/Service1.svc";
WSHttpBinding bind= new WSHttpBinding();
EndpointAddress ea = new EndpointAddress(ADRESASSL);
var myChannelFactory = new ChannelFactory<IService1>(bind, ea);
IService1 client = null;
try
{
client = myChannelFactory.CreateChannel();
client.RunMethod1();
client.Close();
//((ICommunicationObject)client).Close();
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
if (client != null)
client.Close();
}
}
Код для IService1
[ServiceContract]
public interface IService1 : IClientChannel
{
[OperationContract]
int RunMethod1();
//....................................
}
Кажется, я делаю что-то здесь не так, процедура вызывает исключение я упомянул. Что-то еще я должен сделать, чтобы работать, но я не понял этого.
Заранее благодарим за любые советы, которые вы можете мне дать.
Как вы проводите обслуживание? Включен ли https на этом транспорте? – stephenl