Я работаю над созданием сервера приложений на F #. У меня есть сервер приложений, и я могу подключиться с помощью клиента C #, но некоторые вещи, которые я хочу сделать, лучше обслуживать с помощью F #. Проблема в том, что я не могу заставить клиента F # работать должным образом. Я нашел несколько примеров, но я не могу заставить их работать. Наиболее перспективным является здесь . Следуя этому примеру, я придумал следующий код:
let address= new EndpointAddress("net.tcp://192.168.101.100:2009/PrevisionService/tcp")
let factory = new ChannelFactory<IPrevisionAppServer>("NetTcpBinding_IPrevisionAppServer", address)
let channel = factory.CreateChannel()//address)
let GetDataObject (sql) = channel.GetDataObject(sql)
factory.Close()
но я получаю следующую ошибку:
Не удалось найти элемент конечной точки с именем NetTcpBinding_IPrevisionAppServer и контрактом PrevisionAppServer.Main + IPrevisionAppServer в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за того, что ни один элемент конечной точки, соответствующий этому имени, не найден в клиентском элементе.
У меня есть файл app.config, и он отлично работает в C #:
<?xml version="1.0" encoding="utf-8"?>
<!--Client Config-->
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IPrevisionAppServer" closeTimeout="00:01:00"
openTimeout="00:20:00" receiveTimeout="01:00:00" sendTimeout="01:00:00"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://192.168.101.100:2009/PrevisionService/tcp" behaviorConfiguration="ServiceViewEventBehavior"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IPrevisionAppServer"
contract="*" name="NetTcpBinding_IPrevisionAppServer">
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceViewEventBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>`
По какой-то причине он, похоже, игнорирует файл app.config. Есть идеи? Есть ли лучший код, чтобы заставить это работать? Любой был бы оценен!
ОБНОВЛЕНИЕ : Хорошо, я чувствую себя глупо, но я не заметил, что я запускал это в тестовом клиенте, который также имел C # UI в качестве запуска, поэтому app.config находится в C # проект. Итак, теперь возникает вопрос, как применить C # app.config к проекту F # (мне это нужно так)? То есть я не хочу кодировать все получение и установку свойств из настроек приложения в код. Идеи?