#c# #wcf
#c# #wcf
Вопрос:
У меня успешно запущена служба WCF, которую я могу вызвать с помощью javascript. Однако я хочу вызвать его с помощью тестового клиента WCF, и у меня возникают трудности с этим. Мне сказали, что мне нужно убедиться, что я разрешил публикацию метаданных по указанному адресу. После прочтения документации я просто не могу понять, что я хотел сделать, это моя конфигурация:
<system.serviceModel>
<services>
<service name="CommentSessionIDWCFService"
behaviorConfiguration="CommentSessionIDBehavior">
<endpoint
address=""
behaviorConfiguration="CountryProvinceBehavior"
binding="webHttpBinding"
contract="ICommentSessionIDWCFService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CommentSessionIDBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="CountryProvinceBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Я читал другие сообщения, но я не вижу, что заполнять, и я просто продолжаю получать ошибки. Вопросы..
-
Прав ли я, говоря, что мне нужно настроить совершенно новую службу в моей конфигурации для отображения метаданных?
-
Что мне добавить в конфигурацию, чтобы опубликовать эти метаданные, чтобы я мог вызывать их с помощью клиента?
Комментарии:
1. спасибо за редактирование, отметьте, как вы это исправили? Кнопка tab у меня не работает…
Ответ №1:
Вам нужна конечная точка метаданных для вашей службы, вот пример.
<services>
<service name="MyService" behaviorConfiguration="MEX">
<endpoint
address="http://localhost:8000/MEX"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MEX">
<serviceMetadata/>
</behavior>
</serviceBehaviors>
</behaviors>
Комментарии:
1. это все, что мне нужно сделать? На что физически указывает localhost:8000 /MEX ?
2. это добавляет конечную точку на сервере, которая прослушивает через порт 8000 запросы метаданных на основе контракта IMetadataExchange. он отвечает данными, необходимыми для создания прокси-сервера для службы. VS использует эти данные при выполнении операции «добавить ссылку».
3. кто бы ни отклонил этот ответ, пожалуйста, укажите причину для этого.
4. у меня тоже ( 1)
5. @Menahem У меня та же проблема: куда мне добавить строки предоставленных вами кодов? В app.config моего прокси-сервера у меня есть это: ‘ <клиент> <адрес конечной точки = » localhost/Service1.svc » привязка=»Базовая привязка» bindingConfiguration=»Базовая привязка httpbinding_iservice1″ контракт =»ServiceReference1. IService1″ name=»BasicHttpBinding_IService1″ /> ‘ Должен ли я отредактировать значение контракта?
Ответ №2:
У меня возникла аналогичная проблема после изменения файла конфигурации в TestClient с помощью щелчка правой кнопкой мыши и «редактировать с помощью svceditor», чтобы увеличить мой максимальный размер буфера. Если кто-то также допустил эту ошибку, попробуйте перестроить свой проект.
Ответ №3:
Добавить
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Требуется)]
Ответ №4:
Установите httpGetEnabled
значение true
и установите includeExceptionDetailInFaults
значение false
:
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>