Во-первых, ваш файл конфигурации создает службу с помощью WebHttpBinding, следовательно, ваша служба работает должным образом через http и https в стиле REST. мы должны использовать WebHttpBinding для вызова службы или отправки http-запроса на правильный URL-адрес вместо использования BasicHttpBinding.
В этом случае, если вы хотите позвонить в службу, добавив ссылку на службу, как в вашей конфигурации. Я предлагаю вам внести следующие изменения.
- Используйте WebHttpBinding вместо BasicHttpBinding в клиентских
WebConfig.
- Добавить соответствующий атрибут к автоматически сгенерированной операции. [WebGet], [WebInvoke]
- Добавить поведение конечной точки webhttp в конечную точку клиента.
Это может сработать, но я не думаю, что вы этого хотите. Как вы знаете, мы успешно вызываем службу, только когда тип связи wcf между сервером и клиентом согласован. Другое решение для этого случая - мы создаем сервис с помощью BasicHttpBinding. Это также хорошо работает над http и http.
Пожалуйста, обратитесь к моей следующей конфигурации.
Конец сервера.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http"/>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Конец клиента
//use self-signed certificate
ServicePointManager.ServerCertificateValidationCallback += delegate
{
return true;
};
ServiceReference2.Service1Client client = new ServiceReference2.Service1Client("BasicHttpsBinding_IService1");
var result=client.GetData(234);
Console.WriteLine(result);
Файл конфигурации.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" />
<binding name="BasicHttpsBinding_IService1">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://vabqia593vm:11024/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference2.IService1"
name="BasicHttpBinding_IService1" />
<endpoint address="https://localhost:11025/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpsBinding_IService1" contract="ServiceReference2.IService1"
name="BasicHttpsBinding_IService1" />
</client>
</system.serviceModel>
Кроме того, мы должны добавить привязку http и привязку https в модуль привязки IIS.
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.