Устранение неполадок, связанных с руководствами по началу работы с Windows Communication Foundation
В этой статье приведены решения для наиболее распространенных проблем и ошибок, с которыми вы можете столкнуться при выполнении действий, описанных в руководстве по началу работы с приложениями Windows Communication Foundation.
Распространенные проблемы
Не удается найти файлы проекта на жестком диске.
Visual Studio сохраняет файлы проекта в папке C:\Users\<user name>\source\repos.
Не удается найти файлApp.config , созданный Svcutil.exe.
В Visual Studio в окне Добавить существующий элемент по умолчанию отображаются только файлы со следующими расширениями:
- .cs
- .resx
- .Параметры
- .Xsd
- .Wsdl
Чтобы отобразить все типы файлов, выберите Все файлы (*.*) в раскрывающемся списке в правом нижнем углу окна Добавить существующий элемент .
Распространенные ошибки
Компиляция приложения-службы
Ошибка BC30420 "Sub Main" не найдена в "GettingStartedHost.Module1".
Неправильная точка входа для приложения Visual Basic. Внесите следующее изменение:
- В окне Обозреватель решений выберите папку GettingStartedHost, а затем выберите Свойства в контекстном меню. а. В окне GettingStartedHost в поле Автозапускаемый объект выберите Service.Program (или точку входа для конкретного приложения) в списке. b. В меню main выберите Файл>Сохранить все.
Запуск приложения-службы
HTTP не удалось зарегистрировать URL-адрес "http://+:8000/GettingStarted/CalculatorService". Процесс не обладает правами доступа к этому пространству имен.
Для правильного доступа запустите процесс размещения службы Windows Communication Foundation (WCF) с правами администратора:
- Для Visual Studio: выберите программу Visual Studio в меню Пуск , а затем в контекстном меню выберите Дополнительно>Запуск от имени администратора .
- Для окна консоли: выберите Командная строка в меню Пуск , а затем в контекстном меню выберите Дополнительно>администратор запуска от имени .
- Для Windows Обозреватель: выберите исполняемый файл, а затем в контекстном меню выберите Запуск от имени администратора.
Компиляция клиентского приложения
"CalculatorClient", не содержит определения для "<имя> метода" и не найден метод расширения "<имя> метода", принимающий первый аргумент типа "CalculatorClient" (отсутствует директива using или ссылка на сборку?)
Открыты только те методы, которые вы помечаете ServiceOperationAttribute
атрибутом . Если опустить ServiceOperationAttribute
атрибут из метода в интерфейсе ICalculator
, это сообщение об ошибке появляется во время компиляции.
Не удалось найти имя типа или пространства имен CalculatorClient (отсутствует директива using или ссылка на сборку?)
Эта ошибка возникает, если вы не добавили файл generatedProxy.cs (или generatedProxy.vb) в клиентский проект при их создании с помощью средстваSvcutil.exe .
Выполнение клиентского приложения
Необработанное исключение: System.ServiceModel.EndpointNotFoundException: не удалось подключиться к "http://localhost:8000/GettingStarted/CalculatorService". Код ошибки TCP 10061: подключение не установлено, т. к. конечный компьютер отверг запрос на подключение.
Эта ошибка возникает при запуске клиентского приложения без предварительного запуска службы. Сначала запустите ведущее приложение, чтобы запустить службу, а затем запустите клиентское приложение.
Использование средства Svcutil.exe
Svcutil не распознается как внутренняя или внешняя команда, оперативная программа или пакетный файл.
Svcutil.exe должны находиться в системном пути. Проще всего использовать командную строку Visual Studio. В меню Пуск выберите каталог версий> Visual Studio<, а затем выберите Командная строка разработчика для версии> VS<. Эта командная строка задает системный путь к правильным расположениям для всех средств, поставляемых в составе Visual Studio.
Запуск службы и клиентских приложений
System.ServiceModel.Security.SecurityNegotiationException: сбой согласования безопасности SOAP с "http://localhost:8000/GettingStarted/CalculatorService" для целевого объекта "http://localhost:8000/GettingStarted/CalculatorService"
Эта ошибка возникает на присоединенном к домену компьютере, который не имеет сетевого подключения. Подключите компьютер к сети или отключите безопасность как для службы, так и для клиента.
Чтобы отключить безопасность, выполните приведенные далее действия.
Для службы замените код, который создает ,
WSHttpBinding
следующим кодом:// Step 3: Add a service endpoint. selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");
Для клиента в файле конфигурации обновите <элемент безопасности> в элементе <привязки> следующим образом:
<binding name="WSHttpBinding_ICalculator"> <security mode="None" /> </binding>
См. также раздел
Начало работы с приложениями WCF
Краткое руководство по устранению неполадок WCF
Устранение неполадок с установкой