2014-01-13 239 views
5

當我嘗試加載從web服務方法無法處理該請求,我得到一個錯誤:服務器由於內部錯誤

「服務器由於內部錯誤無法處理該請求有關。有關錯誤的更多信息,請打開服務器上的IncludeExceptionDetailInFaults(來自ServiceBehaviorAttribute或來自配置行爲),以便將異常信息發送回客戶端,或根據Microsoft .NET Framework SDK文檔啓用跟蹤並檢查服務器跟蹤日誌「

這是我的app.config端點def:

<services> 
    <service name="Service" behaviorConfiguration="debug"> 
</services> 

<client> 
    <endpoint name="Service" address="net.tcp://localhost:12708/" binding="netTcpBinding" bindingConfiguration="netTcp" contract="path.IService" > 
    <identity> 
     <servicePrincipalName /> 
    </identity> 
    </endpoint> 
</client> 

<serviceBehaviors> 
    <behavior name="debug"> 
     <serviceDebug includeExceptionDetailInFaults="True" /> 
    </behavior> 
    </serviceBehaviors> 

如果我聲明瞭serviceBehaviors,我看不到更多信息事件。 有人可以告訴我如何查看有關此錯誤的更多詳細信息?

+2

不要使WCF跟蹤,看看發生了什麼事情。請參閱http://stackoverflow.com/a/4271597/870604 – ken2k

+0

我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

解決方案:我的服務未啓動。 因爲我們在本地運行服務,所以我需要打開所需的解決方案並通過RG在本地運行服務 - >創建新實例。

我怎麼知道這件事?我的日誌文件存儲在c:/ temp中。 在這個位置,出現了一個新的日誌文件,在那裏我發現了更多關於我的錯誤的信息。 (所有時間我在想,我的錯誤消息的詳細信息將進入我的基本的日誌文件,但沒想到另一個日誌文件

所以,原因:Web服務沒有工作。
解決方案:開始服務localy:Rb - >創建新服務。

6

錯誤信息非常清楚。由於安全原因,服務器被配置爲隱藏內部錯誤。這是根據fault handling in WCF MSDN post的默認行爲。

我看到兩個選項,這兩個假設您可以訪問服務器:

  • 啓用顯示錯誤信息 見fault handling in WCF MSDN post。它提供有關如何設置配置的詳細信息,請參閱「發生異常時提供附加信息」一節。

  • 使用實際斷點調試 這樣會更好。在我看來,沒有錯誤信息實際上可以給你一個調試會話的見解。

希望我幫了忙!

+0

感謝您的快速響應! 不幸的是,這個解決方案仍然不適合我。 我認爲原因是我不通過F5運行服務實例,但在我的控制檯應用程序項目上運行RB並執行:Debug-> start new instance。 所以我不加載完全的服務定義,但嘗試從客戶端節點端點加載服務。 調試不適用於我,當我嘗試將斷點放入我的代碼時,調試器未輸入到它。 任何想法? – codelikeprogrammerwoman

+0

我沒有必要的見解我的朋友......如果我想到什麼,我會告訴你。 –

1

在本地運行時,可以使用ToolsAttach to Process附加到該服務來調試該服務。

在可用進程的列表中,查找進程W3wp.exe,類型Managed (...) x64Managed (...) x86,具體取決於您將服務配置爲運行的配置。

點擊Attatch,在您的服務中設置幾個斷點,並嘗試在您的網絡瀏覽器中再次訪問它們,並且應該點擊它們。

請注意,您需要以調試模式發佈您的WS以使其工作。

+0

感謝您的回覆! 是的,我試圖附加進程,但我沒有進程像w3wp或託管..等;/ 也許這將是有益的,如果我解釋我做什麼來測試我的應用程序: 我運行localy我的服務應用程序是基於localhost:12708。 接下來我回到我的解決方案與控制檯應用程序,RB在我的應用程序,然後單擊:Debug-> Start new instance。 我不知道我應該攻擊哪個進程;/ – codelikeprogrammerwoman

+0

@codelikeprogrammerwoman好的;我假設你已經發布到IIS服務器。如果你只是從VS運行它,你可能會發現一個名爲「WebDev.WebServer40.EXE」的進程。它應該有一個標題,如「ASP.NET Development Server - Port 12708」(同時確保在查找_Attach到Process_列表中的過程之前嘗試運行該服務來啓動該過程)。 – Kjartan

+0

我的服務已啓動,因爲我在WCF服務主機中看到「Status = Started」。 在進程列表中,我沒有像webdev,w3wp,portnumber等進程;/ 只有一個服務看起來是合適的:標題中有[path_to_my_solution.project_name.exe],類型中有Managed(...)但它仍然不起作用;/ – codelikeprogrammerwoman

0

你應該添加診斷您的配置文件:

<system.diagnostics>  
      <sources>  
        <source name="System.ServiceModel"  
                switchValue="All"  
                propagateActivity="true">  
          <listeners>  
            <add name="traceListener"  
                type="System.Diagnostics.XmlWriterTraceListener"  
                initializeData= "D:\AppLogs\Traces.svclog" />  
          </listeners>  
        </source>  
      </sources>  
    </system.diagnostics>