2011-12-02 94 views
4

我一直在尋找MSDN文檔,但還沒有找到具體的答案。WCF @ServiceHost Debug =「true」但web.config編譯=「false」

@ServiceHost中的Debug屬性是覆蓋Web.config的編譯屬性還是web.config屬性覆蓋了所有屬性?

謝謝。

+1

否 - WCF是**完全獨立的ASP.NET,並且默認情況下不會與ASP.NET運行時共享設置或任何內容。 'web.config'設置對WCF無任何影響 –

+0

先前在此處提到...請參閱[本文](http://stackoverflow.com/q/2916283/175679) – SliverNinja

+0

@marc_s:感謝您的回答! – SirPyros

回答

1

據:http://msdn.microsoft.com/en-us/library/aa702682.aspx

的ASP.NET HTTP運行庫處理ASP.NET請求,但沒有參與運往WCF服務請求的處理,即使這些服務在相同的AppDomain爲託管是ASP.NET的內容。相反,WCF服務模型攔截髮送給WCF服務的消息並通過WCF傳輸/通道堆棧路由它們。

除非您在WCF的ASP.NET兼容模式下運行您的服務。在這種情況下...

與默認的並排配置不同,WCF託管基礎結構攔截WCF消息並將它們路由出HTTP管道,但在ASP.NET兼容模式下運行的WCF服務完全參與在ASP.NET HTTP請求生命週期中。在兼容模式下,WCF服務通過IHttpHandler實現來使用HTTP管道,類似於ASPX頁面和ASMX Web服務請求的處理方式。

如果我們接受這個斷言,但我們知道應該遵守配置繼承。

如果你想確定你也許可以建立一個測試...

在ASP.NET兼容模式下運行WCF服務可以訪問HttpContext.Current及其關聯狀態。這意味着您可以詢問IsDebuggingEnabled屬性以查看您是否處於調試模式。您也可以使用一些編譯器指令,如#if DEBUG來查看是否已經達到了一段代碼。

我會很好奇聽到最終的結論是什麼。我認爲這個問題的關鍵是這是否是一個在IIS中託管的WCF服務,以及它是否以AspCompatibility模式運行。

相關問題