wsHttpBinding还原为基本的httpBinding

时间:2011-01-04 01:20:21

标签: wcf

我使用wsHttpBinding创建了一个服务,但每次下载该服务时,它都会在客户端的配置中创建basichttpbinding。有什么想法吗? thansk

<system.serviceModel>
    <serviceHostingEnvironment/>
    <bindings>

      <wsHttpBinding>
        <binding name="WSHttpBinding" sendTimeout="00:10:00" receiveTimeout="00:59:00" bypassProxyOnLocal="false"
         transactionFlow="false" hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000"
         messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true"
         allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="50000000"
           maxArrayLength="50000000" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
          <reliableSession inactivityTimeout="00:59:00" />
          <security mode="Message">
            <!--<transport clientCredentialType="Windows" proxyCredentialType="None"
       realm="" />-->
            <message clientCredentialType="UserName" negotiateServiceCredential="true"
             algorithmSuite="Default" establishSecurityContext="true" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

    <services>
      <service behaviorConfiguration="AdviserPayServiceBehaviour" name="AdviserPay.Services.FirstService.FirstService">
        <endpoint binding="wsHttpBinding" bindingConfiguration="WSHttpBinding" contract="AdviserPay.Services.FirstService.IFirstService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="AdviserPayServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceAuthorization principalPermissionMode="None" impersonateCallerForAllOperations="false" />
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom"
              membershipProviderName="AdviserPayCustomMembershipProvider" />
          </serviceCredentials>
          <serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false"
            serviceAuthorizationAuditLevel="None" messageAuthenticationAuditLevel="SuccessOrFailure" />
          <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

2 个答案:

答案 0 :(得分:5)

.svc标记文件中的服务名称可能与web.config中指定的名称不匹配。

当WCF启动您的服务时,框架会检查.svc文件中的服务名称,然后在web.config中查找与该名称匹配的配置。如果未找到,则使用默认配置 - BasicHttpBinding。

解决问题:

  1. 右键单击FirstService.svc
  2. 点击“查看标记”
  3. 确保Service属性与web.config中的服务名称属性匹配。

答案 1 :(得分:1)

我有同样的问题,但我的服务有效。在我的例子中,我暴露了两个绑定basichttp和wshttp。我有一个在.net 3.5上新建的测试网站。当它获得服务引用时,它会关闭两个绑定,我会注释掉基本端点。 一切正常。

然而, 真正的消费者是一个在.net 2.0中创建的网站,并且已经升级到4.0。所以我做了和以前一样的过程,注释掉了basicHttp端点。但是,当调用服务时我遇到异常并且期望发送和接收http,服务器在此测试中拒绝连接。

这必须是网站升级到4.0并且最初不是在3.5或更高版本中创建的。我可以说这是一种升级情况,因为通常存在的属性文件夹在真实服务使用者站点上不存在。

必须有一个标志/设置才能打开,但我不确定是什么。