#wcf #f# #wsdl
#wcf #f# #wsdl
Вопрос:
В .Net Framework 4.7.2 F # я использовал:
FSharp.Data.TypeProviders
с помощью
type WSDL = WsdlService<"http://...ServiceHost.svc">
type AV = WsdlService<"http://...ServiceHost.svc">
чтобы получить доступ к моей локальной сетевой службе WCF из файла F # .fs.
Как мне получить доступ к службе WCF из клиента F #, когда .Используется NET Core 3.1?
TIA
Если нет, то какой рекомендуемый путь обновления для WCF / petapoco / PostgreSQL?
Ответ №1:
Это поставщик старого типа из F # 3.0, и он зависел от svcutil для генерации кода. Вы могли бы сослаться на его пакет nuget, но возможно (вероятно), что инструмент dotnet-svcutil не поддерживается. Но вы можете использовать WCF из C #, поэтому:
- Добавьте новый проект C # в свое решение
- Добавьте подключенную службу в Visual Studio и настройте свою конечную точку, это сгенерирует необходимый код, создаст ваш проект (и проверит, работает ли он)
- Из вашего проекта на F # добавьте ссылку на этот проект на C # и
open ProjectName
- Создайте свой тип и используйте его из F #. Вы получите intellisense для типов, поэтому пользовательский интерфейс не сильно отличается от поставщика типов.
- При необходимости вы можете опубликовать автономный exe-файл:
dotnet publish -r win10-x64 -c Release -p:PublishSingleFile=true -p:PublishTrimmed=true
Комментарии:
1. Я не вижу службы WCF для добавления?
2. @AlanWayne не могли бы вы быть немного более конкретным? Обычно вы можете добавить службу через ее конечную точку http, ссылаясь на файл wsdl из VS. Затем как в коде C #, так и в коде F # вы можете указать тип, что-то вроде
type MyPortType
, и ссылаться на него в коде. Если вы можете сгенерировать код вручную с помощью svcutil, затем скомпилируйте его и обратитесь к проекту или dll. Самый простой способ — создать пустую C # dll, которая включает вашу службу WCF, и ссылаться на нее из F #, что даст вам доступ ко всем типам.3. Моя ошибка. Служба WCF доступна, но только в том случае, если проект является C # .NET Core, .NET Standard или ASP.NET Основное веб-приложение. Я пропустил это при первоначальном чтении. Хорошая ссылка: используйте инструмент поставщика ссылок на веб-службы WCF в документах. Microsoft.com Спасибо