日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手动配置WCF宿主的.config文件遇到的几种错误

發布時間:2025/3/15 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手动配置WCF宿主的.config文件遇到的几种错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
手動配置WCF宿主的.config文件遇到的幾種錯誤 ?
今天嘗試用控制臺應用程序作為WCF宿主,遇到幾個問題,這幾個問題雖然都不難,但尋找解決方案相當費時費力,做記錄。?
?
WCF標準的配置文件為:
?
<system.serviceModel>
? ? ? ? <services>
? ? ? ? ? ? <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">
? ? ? ? ? ? ? ? <!-- Service Endpoints -->
? ? ? ? <!-- This endpoint is exposed at the base address provided by the host : http://localhost:1808/Service.svc-->
? ? ? ? ? ? ? ? <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator">
? ? ? ? ? ? ? ? ? ? <!--?
? ? ? ? ? ? ? 部署時,應刪除或替換下列標識元素,以反映
? ? ? ? ? ? ? 在其下運行部署服務的標識。刪除之后,WCF 將
? ? ? ? ? ? ? 自動推導相應標識。
? ? ? ? ? -->
? ? ? ? ? ? ? ? ? ? <identity>
? ? ? ? ? ? ? ? ? ? ? ? <dns value="localhost"/>
? ? ? ? ? ? ? ? ? ? </identity>
? ? ? ? ? ? ? ? </endpoint>
? ? ? ? <!-- This mex endpoint is exposed at the base address provided by the host : http://localhost:1808/Service.svc/mex-->
? ? ? ? ? ? ? ? <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
? ? ? ? ? ? </service>
? ? ? ? </services>
? ? ? ? <behaviors>
? ? ? ? ? ? <serviceBehaviors>
? ? ? ? ? ? ? ? <behavior name="CalculatorServiceBehavior">
? ? ? ? ? ? ? ? ? ? <!-- 為避免泄漏元數據信息,請在部署前將以下值設置為 false 并刪除上面的元數據終結點-->
? ? ? ? ? ? ? ? ? ? <serviceMetadata httpGetEnabled="true"/>
? ? ? ? ? ? ? ? ? ? <!-- 要接收故障異常詳細信息以進行調試,請將以下值設置為 true。在部署前設置為 false 以避免泄漏異常信息-->
? ? ? ? ? ? ? ? ? ? <serviceDebug includeExceptionDetailInFaults="false"/>
? ? ? ? ? ? ? ? </behavior>
? ? ? ? ? ? </serviceBehaviors>
? ? ? ? </behaviors>
? ? </system.serviceModel>
?
?
?
遇到問題:
?
1.“服務XXXXX有零個應用程序(非基礎結構)終結點”。
?
  這是因為<service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">的name屬性沒有對應到正確的名稱。?
?
在上面的例子中使用的是Microsoft.ServiceModel.Samples命名空間下的CalculatorService類,如果命名空間命或類名寫錯,或者寫的不完全(比如只寫了命名空間名字或者類名),則會出現上述錯誤。
?
2.WCF服務發布以后,Client 端無法引用WCF服務,查看錯誤為“application soap+xml charset utf-8 客戶端和服務綁定可能不匹配”。或者使用IE訪問WCF服務地址的時候顯示“當前已禁用此服務元數據的發布”。
?
  按著《ASP.NET 3.5高級程序設計(第4版)》中的WCF案例一步步進行,書上說為了使初學者更好的關注WCF細節,先不使用WCF模版,但是進行到最后報出上述錯誤。書上寫的配置是不包含<behaviors>節點的,這時Client 端無法正常連接服務,于是在網上各種找解決方法,在http://www.cnblogs.com/lanpei/archive/2009/10/29/1592218.html上找到累死問題解決方法,于是加上<behaviors>節點,此時仍然會報相同錯誤。因為書上的例子中沒有<behaviors>節點,所以<service>節點中也不包含behaviorConfiguration屬性,設置好behaviorConfiguration="CalculatorServiceBehavior",徹底沒問題了。
?
?3.使用NetTcpBinding綁定WCF服務,Client端引無法引用WCF服務,查看錯誤為“元數據包含無法解析的引用”。
?
  剛開始加了各種節點都不好使,后來查MSDN,下載了一個NetTcpBinding的案例仔細對比才發現是<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>中的contract="IMetadataExchange"寫錯了,本以為這個屬性應該與<endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator">中的contract相同,后來發現理解錯誤,在使用http綁定的時候寫錯好像無所謂,但是使用NetTcpBinding的時候,必須是IMetadataExchange,暫時還不太理解為什么。
?
?4.使用NetTcpBinding綁定WCF服務,本機Client 端可以正常訪問,但跨機器訪問時提示錯誤“net.tcp://XXXXXX不支持請求的升級。這可能是由于不匹配的綁定”。
?
  這個問題很困擾,Google上查“不支持請求的升級”居然沒有任何相關線索,后來忘了怎么找到解決辦法的。該問題是因為服務端和客戶端的安全設置不一致,也就是<security mode=""/>節點中的mode值不一致,設置成一致的(比如None,Transport)就沒問題了。
?
?
?
個人覺得,的確像書上說的那樣,不使用模板會關注WCF的一些細節,可以更好的理解WCF,之前直接用WCF模板做成類似WebService的服務,然后部署到IIS上,覺得很簡單,根本沒想過改變宿主或者安全性之類的問題。最近重新學習WCF才發現,要注意的東西還挺多。

總結

以上是生活随笔為你收集整理的手动配置WCF宿主的.config文件遇到的几种错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。