Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Средство dotnet-svcutil для Windows Communication Foundation (WCF) — это средство .NET, которое извлекает метаданные из веб-службы в сетевом расположении или из WSDL-файла и создает класс WCF, содержащий методы прокси-сервера клиента, которые обращаются к операциям веб-службы.
Аналогично инструменту метаданных модели службы svcutil для проектов .NET Framework, dotnet-svcutil — это инструмент командной строки для генерации ссылки на веб-службу, совместимой с проектами .NET.
Средство dotnet-svcutil является альтернативой подключенному поставщику служб Visual Studio WCF Web Service Reference. В качестве инструмента .NET кроссплатформенный инструмент dotnet-svcutil доступен на Linux, macOS и Windows.
Это важно
Следует ссылаться только на службы из надежного источника. Добавление ссылок из ненадежного источника может компрометировать безопасность.
Предпосылки
- Последняя версия .NET SDK
- Ваш любимый редактор кода
Начало работы
В следующем примере описаны шаги, необходимые для добавления ссылки на веб-службу в веб-проект .NET и вызова службы. Вы создадите веб-приложение .NET с именем HelloSvcutil и добавьте ссылку на веб-службу, реализующую следующий контракт:
[ServiceContract]
public interface ISayHello
{
[OperationContract]
string Hello(string name);
}
В этом примере предположим, что веб-служба будет размещена по следующему адресу: http://contoso.com/SayHello.svc
В командном окне Windows, macOS или Linux выполните следующие действия:
Создайте каталог HelloSvcutil для проекта и сделайте его текущим каталогом, как показано в следующем примере:
mkdir HelloSvcutil cd HelloSvcutilСоздайте веб-проект C# в этом каталоге с помощью следующей
dotnet newкоманды:dotnet new webdotnet-svcutilУстановите пакет NuGet в качестве средства командной строки:dotnet tool install --global dotnet-svcutilВыполните команду dotnet-svcutil , чтобы создать файл ссылки на веб-службу следующим образом:
dotnet-svcutil http://contoso.com/SayHello.svc
Созданный файл сохраняется как HelloSvcutil/ServiceReference/Reference.cs. Средство dotnet-svcutil также добавляет в проект соответствующие пакеты WCF, необходимые прокси-коду в качестве ссылок на пакеты.
Использование ссылки на сервис
Восстановите пакеты WCF с помощью
dotnet restoreкоманды следующим образом:dotnet restoreНайдите имя клиентского класса и операции, которую вы хотите использовать.
Reference.csбудет содержать класс, который наследуется отSystem.ServiceModel.ClientBase, с методами, которые можно использовать для вызова операций на службе. В этом примере, вы хотите вызвать операцию Hello службы SayHello.ServiceReference.SayHelloClient— имя клиентского класса и вызывает методHelloAsync, который можно использовать для вызова операции.Откройте находящийся в редакторе файл
Startup.csи добавьте директивуusingдля пространства имен ссылки на службу в самом верху.using ServiceReference;Измените
Configureметод для вызова веб-службы. Для этого создайте экземпляр класса, который наследуется отClientBase, и вызовите метод в клиентском объекте.public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { var client = new SayHelloClient(); var response = await client.HelloAsync(); await context.Response.WriteAsync(response); }); }Запустите приложение с помощью следующей
dotnet runкоманды:dotnet runПерейдите по URL-адресу, указанному в консоли (например,
http://localhost:5000) в веб-браузере.
Вы увидите следующие выходные данные: "Привет dotnet-svcutil!"
Для подробного dotnet-svcutil описания параметров средства вызовите средство, передав параметр справки следующим образом:
dotnet-svcutil --help
Обновление ссылки на службу
Если веб-служба изменяется, можно обновить ссылку на службу, чтобы отразить эти изменения. Параметр -u обновляет созданный код на основе метаданных из конечной точки службы или WSDL-файла.
Чтобы обновить существующую ссылку на службу, выполните указанные действия.
dotnet-svcutil -u ./path/to/reference/folder
Папка с ссылками должна содержать файл ConnectedService.json, созданный при начальном добавлении службы. Средство считывает этот файл конфигурации, чтобы определить конечную точку службы и повторно создать прокси-код с обновленными метаданными.
Отзывы и вопросы
Если у вас есть вопросы или отзывы, откройте проблему на сайте GitHub. Вы также можете просмотреть все существующие вопросы или проблемы в репозитории WCF на GitHub.
Примечания к релизу
- Ознакомьтесь с заметками о выпуске для обновленных сведений о выпуске, включая известные проблемы.