0

我在 C# 中有一个 WCF 项目(:53763/WCFTestService.svc)和一个 Web 应用程序(:50238/CSharp/test.aspx)。我正在尝试在我的 Web 应用程序中调用 WCF 项目方法。我已将 WCF 项目添加为 Web 应用程序中的服务引用。

在 test.aspx.cs 文件中我有一个方法如下

[WebMethod()]
    public static string GetWCF()
    {
        WCFTestServiceClient client = new WCFTestServiceClient();
        string result = client.XMLData("1122");
        return result;
    }

当我运行此错误时:

在 ServiceModel 客户端配置部分中找不到引用合同“TestWCFServiceReference.IWCFTestService”的默认终结点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素

.

当我将 WCF 项目添加为我的 Web 应用程序中的服务引用时,Web 应用程序中的 web.config 文件不会自动更新。(添加引用时默认不添加代码)。我是否需要在 web.config 文件中添加任何内容才能使其正常工作?

WCF 项目的 web.config 是:

<?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>
4

2 回答 2

0

在您的配置文件中,您只有一个带有 webHttpBinding 的端点,用于静态地址。所以你可以参考这里来配置和测试restful服务。或添加另一个端点为 SOAP 客户端提供服务元数据,例如

     <endpoint address="" binding="basicHttpBinding" contract="WCFTestService.IRestService"                      bindingNamespace="">
          </endpoint>
于 2013-05-11T13:07:50.127 回答
0

听起来您在引用 WCF 项目时需要解决一个错误。添加引用时,请查看 Visual Studio 上的信息选项卡(不是警告/错误),您将看到错误。我猜它与 Newtonsoft.Json 有关 - 有很多关于它的帖子,例如Error added service reference: Type is a recursive collection data contract 不支持

于 2013-05-10T08:15:27.153 回答