代码之家  ›  专栏  ›  技术社区  ›  Matt

WCF调用引发:“提供的URI方案“http”无效;应为“net.tcp”。异常

  •  1
  • Matt  · 技术社区  · 15 年前

    我在iis7中有一个wcf服务。

    这是我在IIS中托管的服务的app.config

    <system.serviceModel>
      <bindings />
      <services>
        <service behaviorConfiguration="querierSearch.Querier.WCF.QuerierBehavior"
          name="querierSearch.Querier.WCF.Querier">
          <endpoint 
             address="net.tcp://localhost:808/querierSearch.Querier.WCF/Querier.svc"
            binding="netTcpBinding" bindingConfiguration="" name="EndPointTCP"
            contract="querierSearch.Querier.WCF.IQuerier" />
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="querierSearch.Querier.WCF.QuerierBehavior">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="true" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
    

    下面是客户端中引用WCF服务的app.config。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <bindings>
          <netTcpBinding>
            <binding name="EndPointTCP" closeTimeout="00:01:00" 
              openTimeout="00:01:00"
              receiveTimeout="00:10:00" sendTimeout="00:01:00" 
              transactionFlow="false" transferMode="Buffered" 
              transactionProtocol="OleTransactions"
              hostNameComparisonMode="StrongWildcard" listenBacklog="10" 
              maxBufferPoolSize="524288"
              maxBufferSize="65536" maxConnections="10" 
              maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" 
              axArrayLength="16384" maxBytesPerRead="4096" 
              maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" 
                protectionLevel="EncryptAndSign" />
                <message clientCredentialType="Windows" />
              </security>
            </binding>
          </netTcpBinding>
        </bindings>
        <client>
          <endpoint address="net.tcp://localhost/Search.Querier.WCF/Querier.svc"
            binding="netTcpBinding" bindingConfiguration="EndPointTCP"
            contract="SearchQueryService.IQuerier"
            name="EndPointTCP">
            <identity>
              <userPrincipalName value="joeuser@company.com" />
            </identity>
          </endpoint>
        </client>
      </system.serviceModel>
    </configuration>
    

    出于某种原因,我仍然得到“提供的URI方案'http'无效;应为'net.tcp'.'异常。”

    我不明白为什么……

    3 回复  |  直到 10 年前
        1
  •  2
  •   Matt    15 年前

    事实证明我错过了MEX的终点… 胡蜂

        2
  •  0
  •   Orion Edwards    15 年前

    可能这个

    <serviceMetadata httpGetEnabled="true" />
    

    您要求它在TCP服务上启用HTTP,这似乎会导致一些问题。

        3
  •  0
  •   PeterX    10 年前

    我的问题是 behaviorConfiguration 在web.config中 删除 在我刷新 Service References .

    (我的 行为配置 使用A clientVia 地址而不是允许它穿过防火墙的标准端点地址)。