У меня есть решение, которое состоит из веб-проекта и проекта библиотеки классов.Решение веб-проекта напрямую ссылается на сервис wcf.Существует второй сервис wcf, но это проект библиотеки классов, который напрямую ссылается на него.Я добавляю библиотеку классов (вывод) как ссылку на мой веб-проект.
Следовательно, в web.config моего веб-проекта у меня теперь настроены две службы scf.Этот процесс был прост, поскольку я вручную скопировал файл app.config (часть system.serviceModel) непосредственно в web.config, , а затем настроил веб-проект для непосредственного взаимодействия с другой службой wcf (напрямую, а не черезлюбые библиотеки).
Мой веб-проект должен общаться с третьим веб-сервисом (asmx).Снова я планирую внести это как библиотеку классов и включить DLL в свой веб-проект.(Это отдельное решение).Когда я взглянул на app.config этого конкретного проекта библиотеки классов, я подумал, что просто скопирую эти необходимые разделы и объединю их соответственно с моим текущим web.config.
Так что для проекта библиотеки третьего класса (который ссылается наслужба asmx) Я случайно заметил, что в узле привязок есть узел basicHttpBinding, а затем - customBinding.Затем далее под клиентским узлом были два узла конечных точек, которые имели атрибуты службы.(Я не понимаю, почему здесь должно быть две конечные точки в первую очередь).
Итак, я скопировал то, что попало под узел привязок (из 3-го класса lib prj app.config) и добавил его кузел привязок (в web.config).Я сделал аналогичный процесс для копирования конечных точек тоже.Но теперь, когда я пытаюсь запустить веб-сайт, я получаю исключение, которое останавливается во время инициализации мыльного клиента (службы asmx): оно говорит что-то вроде того, что он не может определить конечную точку для этого контракта.
web.config перед добавлением веб-службы asmx выглядит следующим образом:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IEmployeeService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
<binding name="WSHttpBinding_IHelper" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8731/Design_Time_Addresses/InfiniumIS/EmployeeService/"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IEmployeeService"
contract="InfiniumWS.IEmployeeService" name="WSHttpBinding_IEmployeeService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="http://localhost:8732/Design_Time_Addresses/SQLIS/Service1/"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IHelper"
contract="SQLIS.IHelper" name="WSHttpBinding_IHelper">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Ниже приведена модель службы для проекта со службой asmx (взята из app.config)
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="ServiceSoap1" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
<customBinding>
<binding name="ServiceSoap12">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" requireClientCertificate="false" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="https://is.security/WebAppSec_WS/service.asmx"
binding="basicHttpBinding" bindingConfiguration="ServiceSoap"
contract="apps.intranet.ws.ServiceSoap" name="ServiceSoap" />
<endpoint address="https://is.security/WebAppSec_WS/service.asmx"
binding="customBinding" bindingConfiguration="ServiceSoap12"
contract="apps.intranet.ws.ServiceSoap" name="ServiceSoap12" />
</client>
</system.serviceModel>
Я просто объединил разделы, то есть скопировал все, что приходит во 2-й конфигурации под узлом привязки, и добавил его к 1-му.Я сделал аналогичный процесс для копирования конечных точек.
ps: Понятия не имею, почему 2-й конфиг (asmx) показывает мне две конечные точки?