簡體   English   中英

WCF中的c#綁定錯誤

[英]c# binding error in WCF

嘗試訪問WCF服務時出現以下錯誤。

無法通過綁定MetadataExchangeHttpBinding找到與端點的方案http匹配的基址。 注冊的基地址方案是[https]。

這是我的配置

<?xml version="1.0"?>
    <configuration>
      <system.web>
        <compilation debug="true"/>
        <customErrors mode="Off"/>
      </system.web>

      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="DefaultHttpBinding"
                     maxBufferSize="655360"
                     maxReceivedMessageSize="655360">
            </binding>
          </basicHttpBinding>
        </bindings>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
          <baseAddressPrefixFilters>
            <add prefix="http://MySite.com/MyVirtualDir/"/>
          </baseAddressPrefixFilters>
        </serviceHostingEnvironment>
        <services>
          <service behaviorConfiguration="DefaultBehavior"
                   name="MyWcfService">
            <endpoint address="http://MySite.com/MyVirtualDir/MyWcfService.svc"
                      binding="basicHttpBinding"
                      bindingConfiguration="DefaultHttpBinding"
                      contract="MyNamespace.IMyWcfService" />
            <endpoint address="mex"
                      binding="mexHttpBinding"
                      contract="IMetadataExchange" />
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="DefaultBehavior">
              <serviceMetadata httpGetEnabled="true"
                               policyVersion="Policy15"/>
              <serviceDebug httpHelpPageEnabled="true"
                            includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

這是我的.scv文件

<%@ ServiceHost Language="C#" Debug="true" Service="MyWcfService" Factory="MyWcfServiceHostFactory"%>

提供一些可能有用或可能沒有幫助的背景知識

  • 該服務在我們的DEV環境中正常運行。 此錯誤僅發生在我們的TEST和PROD環境中。 我所知道的環境之間唯一可辨別的差異是TEST和PROD正在使用負載均衡器。
  • 該服務在所有環境中的IIS 5.1中托管
  • 該服務已在dot.net 3.5中編寫,並由WebServiceHost工廠激活
  • 我沒有在配置文件中的任何地方指定https
  • 在任何環境中,IIS都未啟用SSL。 已啟用匿名訪問(安全實施將在稍后進行)。

我們非常感謝任何幫助,因為這是我們項目的完整展示。 我已經在網上搜索了這個問題的解決方案,但似乎與我的特定設置沒什么關系。

嘗試啟用對服務的跟蹤,以檢查測試/生產環境中出現故障的原因。 要啟用跟蹤,請檢查此鏈接

你確定MyWcfServiceHostFactory沒有任何與配置相關的代碼(即通過c#代碼構建配置)

所以對我來說,解決這個問題的方法是根據你的一些建議刪除mex綁定。 我還從config中的DefaultBehavior中刪除了servicemetadata部分。

此修復程序僅隱藏原始問題,因為我仍然不知道為什么mex綁定被注冊為https。 但我現在可以使用我的Web服務,即使我無法從中檢索元數據 - 這在我的情況下也不是問題。

這是更正后的配置

<?xml version="1.0"?>
    <configuration>
        <system.web>
            <compilation debug="true"/>
            <customErrors mode="Off"/>
        </system.web>

        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="DefaultHttpBinding"
                             maxBufferSize="655360"
                             maxReceivedMessageSize="655360">
                    </binding>
                </basicHttpBinding>
            </bindings>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
                <baseAddressPrefixFilters>
                    <add prefix="http://MySite.com/MyVirtualDir/"/>
                </baseAddressPrefixFilters>
            </serviceHostingEnvironment>
            <services>
                <service behaviorConfiguration="DefaultBehavior"
                         name="MyWcfService">
                    <endpoint address="http://MySite.com/MyVirtualDir/MyWcfService.svc"
                              binding="basicHttpBinding"
                              bindingConfiguration="DefaultHttpBinding"
                              contract="MyNamespace.IMyWcfService" />
                </service>
            </services>
            <behaviors>
                <serviceBehaviors>
                    <behavior name="DefaultBehavior">
                        <serviceDebug httpHelpPageEnabled="true"
                                      includeExceptionDetailInFaults="true"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>
        </system.serviceModel>
    </configuration>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM