2009-11-10 54 views
0

我想讓IIS6與我在同一臺機器上單獨的Windows服務應用程序中託管的WCF服務一起可靠地工作。用戶通過一些可以正常工作的HTTP公開服務連接到IIS,然後IIS需要從Windows服務獲取一些信息以放入HTTP響應中。我還需要Windows Service和IIS之間的回調通道。任何人都可以IIS作爲一個WCF客戶端可靠地工作

經過大量的努力,我得到它與netTcpBinding一起工作,一切都會玫瑰花了5或10分鐘,但之後,IIS會報告WCF通道爲故障,然後搗碎並停止處理任何請求,直到工人過程得到回收,整個事情重演。

我一直在試圖交換到netNamedPipeBinding,但是IIS拒絕或被拒絕訪問管道,「沒有在net.pipe:// localhost/mypipename監聽的端點」錯誤。我可以從控制檯應用程序連接到管道。

所以我的問題是有人得到這兩個綁定與IIS作爲客戶端或有任何其他方法?

回答

2

我們使用IIS 7託管約20個服務與net.tcp和net.pipe綁定,它工作正常。

您的管道問題看起來像我的配置錯誤。如果有幫助,這是我們如何讓他們配置:

服務器:

<endpoint address ="" binding="fooBinding" 
      contract="Bla.IBlaAPI" 
      bindingConfiguration="BlaAPI.BindingConfig"> 

綁定配置:

<binding name="BlaAPI.BindingConfig" 
       receiveTimeout = "10:50:00" 
       sendTimeout = "10:50:00" 
       maxReceivedMessageSize="2147483647" 
       maxBufferSize="2147483647" 
       maxBufferPoolSize="2147483647" 
       transactionFlow="false"> 
      <readerQuotas maxDepth="32" 
         maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" 
         maxBytesPerRead="8192" 
         maxNameTableCharCount="2147483647" /> 
      <security mode="None"/> 
</binding> 

注意,我們使用的是長超時和具有非常高消息大小等配額,因爲我們通過此服務傳遞一些大塊數據。您可以根據自己的需要進行調整。我們將安全性設置爲「無」,因爲該服務只能從本地安全機器聯繫。同樣,你的里程可能會有所不同

客戶:

<endpoint name="Bla.Bindings.BlaAPI" address="net.pipe://localhost/bla/IBlaAPI.svc" 
       behaviorConfiguration="BlaAPI.ServiceBehavior" 
       binding="netNamedPipeBinding" bindingConfiguration="BlaAPI.BindingConfig" 
       contract="Bla.IBlaAPI" /> 

關於故障狀態問題,請注意,如果該服務代碼的執行過程中發生未處理的異常時,服務實例將保持在故障狀態,直到它被正確關閉。爲避免出現這種情況,請處理服務頂級的異常或使用(例如,Enterprise Library Excexption Handling塊)。

+0

你可以發佈你的綁定配置節點嗎?你的命名管道也必須做任何有關權限或身份的事情嗎? – sipwiz 2009-11-10 12:42:11

+0

完成後,添加了我們的綁定配置。關於安全性,我們使用「無」,因爲所有訪問都是本地的。 – 2009-11-10 12:49:44

+0

看起來像我netNamedPipeBinding的問題是Vista和/或IIS7之一。即使嘗試完全相同的配置,它也不適用於我的Vista開發PC,但在我的Win2k3/IIS6服務器上運行良好。 – sipwiz 2009-11-10 13:38:07

0

你能告訴我你用來處置wcf客戶端代理的代碼嗎?

切勿在wcf代理上使用'使用',因爲它不會每次都正確處理。這可能會導致故障狀態。

+0

這似乎確實吸引了很多人:)。這不是我的問題,但我正在調整我的錯誤處理,看看我能不能改善它,開始試圖縮小他們突然出現的問題。 – sipwiz 2009-11-10 12:43:56

1

重新NetNamedPipeBinding和 「沒有終點在聽net.pipe://本地主機/ mypipename」

是您的Web應用程序冒充其用戶?如果您嘗試通過命名管道綁定訪問WCF服務,則會出現上述錯誤,該安全上下文的登錄令牌具有NETWORK USERS的成員身份。當WCF客戶端通道棧嘗試讀取服務創建的共享內存對象以發佈使用中的管道名稱時,它不會區分訪問被拒絕的錯誤和「未找到」錯誤。(請參閱http://blogs.charteris.com/blogs/chrisdi/archive/2008/05.aspx等)

IIS應用程序中的模擬令牌總是具有NETWORK USERS成員身份。

相關問題