Добавление ссылки 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 - о чем есть много постов, таких как Ошибка при добавлении ссылки на службу: Тип - это контракт рекурсивного сбора данных, который не поддерживается

Другие вопросы по тегам