Не удалось найти базовый адрес, соответствующий схеме net.tcp
Я переместил свой сервис передачи файлов из basicHttpBinding в netTcpBinding, так как я пытаюсь настроить канал дуплексного режима. Я также запустил свой сервис совместного использования портов net.tcp.
В настоящее время я нахожусь в dev и сам хостинг на xp box, пока мы не переместим приложение на сервер dev. так что пока у меня нет доступа к IIS.
После настройки моего сервиса как такового:
<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
<endpoint name="MyFileTransferEP"
address = ""
binding = "netTcpBinding"
bindingConfiguration="MyFileTransferNetTcpEP"
behaviorConfiguration="NetTcpEPBehavior"
contract="API.FileTransfer.IFileTransferService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8001/project/filetransfer.svc" />
</baseAddresses>
</host>
</service>
И моя привязка как таковая:
<netTcpBinding>
<binding name="MyFileTransferNetTcpEP"
hostNameComparisonMode="StrongWildcard"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
maxReceivedMessageSize="2147483647"
transferMode="Streamed"
portSharingEnabled="true">
<security mode="None">
<transport clientCredentialType="None" />
<message clientCredentialType="None" />
</security>
</binding>
</netTcpBinding>
Я получаю следующую ошибку, когда я прав и браузер к файлу SVC:
Не удалось найти базовый адрес, соответствующий схеме net.tcp для конечной точки с привязкой NetTcpBinding. Схемы зарегистрированных базовых адресов: [http].
Чтение в Интернете предполагает, что для решения этой проблемы мне нужно было добавить привязку net.tcp к привязке приложения в IIS. Но что мне делать, если я сам хостинг и не имею доступа к IIS ?? Кстати, если вы читаете это и «делаете» IIS, выполните следующие действия: Щелкните правой кнопкой мыши виртуальный каталог / приложение в IIS -> Управление приложением -> Дополнительные параметры. А в разделе «Активные протоколы» добавьте net.tcp.
Есть идеи?
ОБНОВЛЕНИЕ: я думал, что это работало, но это все еще не работает. Вот что у меня сейчас: я все еще получаю сообщение об ошибке «Не удалось найти базовый адрес, соответствующий схеме net.tcp». Я изменил все свои базовые адреса, чтобы отразить ваше предложение. Вот что у меня сейчас:
<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
<endpoint name="MyJSONFileTransferEP"
address="json"
binding="webHttpBinding"
bindingConfiguration="jsonWeb"
behaviorConfiguration="WebHttpEPBehavior"
contract="API.FileTransfer.IJSONFileTransferService" />
<endpoint name="MyPOXFileTransferEP"
address="pox"
behaviorConfiguration="WebHttpEPBehavior"
binding="webHttpBinding"
bindingConfiguration="poxWeb"
contract="API.FileTransfer.IPOXFileTransferService" />
<endpoint name="MySOAPFileTransferEP"
address="filetransfer"
binding="netTcpBinding"
bindingConfiguration="netTcpWeb"
behaviorConfiguration="NetTcpEPBehavior"
contract="API.FileTransfer.ISOAPFileTransferService" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:2544/filetransfer/" />
</baseAddresses>
</host>
</service>
Я пробовал это с обоими "net.tcp: // localhost: 2544" & "net.tcp: // localhost: 8001". Нужно ли что-то добавить (разрешить) в настройках брандмауэра? Любые другие предложения?
Вот mexTcpBinding моего filetransferservice в моем файле App.config:
<endpoint address="net.tcp://localhost:2544/filetransfer/mex"
binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"
name="filetransfermex">
<identity>
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
Я все еще не могу сослаться на мой FileTransferServiceClient в моем веб-приложении.
Еще раз спасибо.