WCF配置中的问题

时间:2011-09-21 07:07:54

标签: wcf-binding

有两个模板:一个是中间件,另一个是webclient。

中间件的web.config如下:

<?xml version="1.0"?>
    <configuration>
      <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section name="HoneywellMiddleware.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <authentication mode="Windows"/>
        <anonymousIdentification enabled="true"/>
        <identity impersonate="true"/>
      </system.web>
      <connectionStrings>
        <add name="SQLConnectionString" connectionString="server=01HW361477;uid=sa;pwd=MSS@L2008;database=Honeywell"/>
      </connectionStrings>
      <system.serviceModel>
        <services>
          <service name="HoneywellMiddleware.HoneywellService" behaviorConfiguration="ServiceBehaviour">
            <endpoint address="" binding="webHttpBinding" contract="HoneywellMiddleware.IHoneywellService" behaviorConfiguration="web"/>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:56334/HoneywellService.svc"/>
              </baseAddresses>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="ServiceBehaviour">
              <!-- 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>

对于webclient Web应用程序,它是这样的:

<?xml version="1.0"?>

    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
        <bindings>
          <basicHttpBinding>
            <binding name="HoneywellMiddleware_IHoneywellService"/>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:56334/HoneywellService.svc" binding="basicHttpBinding"
              bindingConfiguration="HoneywellMiddleware_IHoneywellService" contract="HoneywellService.IHoneywellService"
              name="HoneywellMiddleware_IHoneywellService" />
        </client>
      </system.serviceModel>
      <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" 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>
    </configuration>

错误:

There was no endpoint listening at http://localhost:56334/HoneywellService.svc 
that could accept the message. This is often caused by an incorrect address or 
SOAP action. See InnerException, if present, for more details.

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您有绑定不匹配(http与Web绑定)或合约不匹配(HoneywellService.IHoneywellService vs HoneywellMiddleware.IHoneywellService)。

将您的客户端端点更改为:

    <client>
      <endpoint address="http://localhost:56334/HoneywellService.svc" binding="webHttpBinding"
          contract="HoneywellService.IHoneywellService"
          name="HoneywellMiddleware_IHoneywellService" />
    </client>

    <client>
      <endpoint address="http://localhost:56334/HoneywellService.svc" binding="webHttpBinding"
          contract="HoneywellMiddleware.IHoneywellService"
          name="HoneywellMiddleware_IHoneywellService" />
    </client>