Добавление ссылки WCF в веб-приложение C#
У меня есть проект WCF (:53763/WCFTestService.svc) и веб-приложение (:50238/CSharp/test.aspx) на C#. Я пытаюсь вызвать метод проекта WCF в моем веб-приложении. Я добавил проект WCF как ссылку на сервис в веб-приложении.
в файле test.aspx.cs у меня есть метод следующим образом
[WebMethod()]
public static string GetWCF()
{
WCFTestServiceClient client = new WCFTestServiceClient();
string result = client.XMLData("1122");
return result;
}
Когда я запускаю эту ошибку получения:
Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'TestWCFServiceReference.IWCFTestService' в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за того, что в клиентском элементе не найден элемент конечной точки, соответствующий этому контракту.
,
Когда я добавляю проект WCF в качестве ссылки на службу в мое веб-приложение, файл web.config в веб-приложении не обновляется автоматически. (Код не добавляется по умолчанию во время добавления ссылки). Нужно ли что-нибудь добавить в файл web.config, чтобы он работал?
web.config проекта WCF:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WCFTestService.RestService" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="webHttpBinding" contract="WCFTestService.IRestService" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
<!--<behavior>
--><!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --><!--
<serviceMetadata httpGetEnabled="true"/>
--><!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --><!--
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>-->
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
2 ответа
В вашем файле конфигурации у вас есть только одна конечная точка с webHttpBinding, которая используется для адреса покоя. Таким образом, вы можете обратиться сюда, чтобы настроить и проверить отдых службы. или добавить другую конечную точку для предоставления метаданных службы для клиента SOAP, например
<endpoint address="" binding="basicHttpBinding" contract="WCFTestService.IRestService" bindingNamespace="">
</endpoint>
Похоже, есть ошибка, которую вам нужно будет устранить, когда вы ссылаетесь на свой проект WCF. При добавлении ссылки посмотрите на вкладку "Информация" (не предупреждение / ошибки) в Visual Studio, и вы увидите ошибки. Я предполагаю, что это будет иметь какое-то отношение к Newtonsoft.Json - о чем есть много постов, таких как Ошибка при добавлении ссылки на службу: Тип - это контракт рекурсивного сбора данных, который не поддерживается