客户端服务测试的WCF服务错误 - SVCUtil

时间:2012-08-10 18:59:30

标签: wcf wcf-binding wcf-client service-reference

我创建了一个WCF服务,编译好并发布好了;我创建了一个Web应用程序来测试WCF服务,最初在使用svcutil.exe时创建了源文件而不是配置文件。所以我添加了服务作为服务参考,看起来很好,直到我尝试运行客户端应用程序。出现以下错误:

Could not find default endpoint element that 
references contract 'ServiceReference1.IService1' in the ServiceModel 
client configuration section. This might be because no configuration 
file was found for your application, or because no endpoint 
element matching this contract could be found in the client element.

我认为web.config文件有问题并搜索帖子我发现我需要将服务模型部分从服务配置文件复制到客户端测试Web配置文件。这没有用。

WCF服务配置文件

<configuration>

<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
  <webHttpBinding>
    <binding name="webHttpBinding" crossDomainScriptAccessEnabled="true" />
  </webHttpBinding>
</bindings>
<behaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="webHttpBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
 </behaviors>
  <services>
  <service behaviorConfiguration="webHttpBehavior" name="WcfInstanceRules2.Service1">
    <endpoint address="mex" 
     binding="webHttpBinding" bindingConfiguration="webHttpBinding"      

    contract="WcfInstanceRules2.IService1" behaviorConfiguration="web"/>
  </service>
 </services>
 </system.serviceModel>
 <system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

WebApp测试配置文件

    <configuration>
    <connectionStrings>
    <add name="ApplicationServices"
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    </connectionStrings>
  <system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>
    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>
     <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
    </system.web>
    <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
    <system.serviceModel>
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
     <bindings>
      <webHttpBinding>
        <binding name="webHttpBinding" crossDomainScriptAccessEnabled="true" />
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webHttpBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="webHttpBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      </behaviors>
       <services>
       <service behaviorConfiguration="webHttpBehavior" name="WcfInstanceRules2.Service1">
        <endpoint address="mex" binding="webHttpBinding"   
     bindingConfiguration="webHttpBinding" 
     contract="WcfInstanceRules2.IService1" behaviorConfiguration="webHttpBehavior"/>
      </service>
     </services>
     </system.serviceModel>
    </configuration>

2 个答案:

答案 0 :(得分:1)

您需要使用客户端定义的客户端端点。您当前正在Web应用程序中定义新的服务主机。在客户端,您应该有类似......

<system.serviceModel>
  <client>
     <endpoint address="http://.../mex" binding="webHttpBinding"   
 bindingConfiguration="webHttpBinding" 
 contract="ServiceReference1.IService1" behaviorConfiguration="webHttpBehavior"/>
  </client>
</system.serviceModel>

为了简化这一过程,当您使用 Add Service Reference 时,VS.NET将为您添加此客户端端点。

答案 1 :(得分:0)

在您的端点标记中更改合同=“ServiceReference1.IService1”

其中ServiceReference1是您在项目中添加的服务引用。