2010-02-22 120 views
18

我有一個應用程序,它將使用WCF爲客戶提供各種數據塊。但是,由於將要返回的一些數據集的大小(這是因爲客戶端應用程序需要在列表中顯示大量對象,而不是因爲我只是懶惰的設計) m達到郵件大小限制。我期待這一點,並計劃實施數據分頁/響應流式傳輸(我相信Pablo Cibraro曾就此寫過一篇文章)。但是,我看到一些演示使WCF數據服務看起來非常酷。我只是無法爲我工作。WCF數據服務 - 如何診斷請求錯誤?

我沒有數據庫後端,我沒有託管在IIS內部。我已經能夠獲得一些基本對象的例子,但是一旦我將它插入到應用程序的對象中,它就不起作用 - 我得到一個Request Error,它似乎被設計爲無益 - 它只是建議檢查服務器日誌而不建議我如何做到這一點。我懷疑這是假設我正在使用IIS進行託管,並且IIS可能會爲其託管的數據服務記錄消息。

一個相當簡單的類,我想一起工作是一個日誌消息(我希望有一個診斷的儀表板風格的客戶端能夠遠程告訴我從比如說服務器日誌,過去24小時):

public class Message 
{ 
    public string Source { get; set; } 
    public MessageType Type { get; set; } 
    public DateTime Timestamp { get; set; } 
    public string MessageText { get; set; } 
    public override string ToString() 
    { 
     return string.Format("[{0}] [{1}] [{2}] {3}", Timestamp.ToString(), Source, Type, MessageText); 
    } 
} 

使用這個類會產生錯誤,而如果我將它指向一個類,我將它模擬爲一個測試(如在Pablo的示例中:http://msdn.microsoft.com/en-us/data/cc745968.aspx),那麼它工作正常。關於這是爲什麼,或者我如何從錯誤中獲得有用的東西的任何想法?

下面是我的服務定義和我使用揭露IQueryable的<類>實施我想回到藏品(在現階段,我只是做了記錄,其類型爲List<Message>

public class DataServiceFacade 
{ 
    public IQueryable<Message> Log 
    { 
     get 
     { 
      return Program.Log.AsQueryable(); 
     } 
    } 
} 

public class DataServiceHost : DataService<DataServiceFacade> 
{ 
    public static void InitializeService(IDataServiceConfiguration config) 
    { 
     config.UseVerboseErrors = true; 
     config.SetEntitySetAccessRule("*", EntitySetRights.All); 
     config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 
    } 
} 

現在,這可能是一件簡單的事情,但我已經花費了太多的時間將我的頭撞在這堵特殊的磚牆上。我希望Data Services能夠爲我處理諸如分頁之類的事情,併爲我提供一種靈活的格式,可以在不同的平臺上工作。另外,如果無法爲此使用數據服務,我將非常感謝任何有關數據分頁或流式傳輸集合的指針。

謝謝

回答

19

這聽起來像你只看到通用的「響應錯誤」消息。要查看該消息的詳細信息,您需要將行爲修改爲「includeExceptionDetailInFaults」。

您可以更改配置文件中的行爲。

<services> 
    <service name="DataServiceHost" 
      behaviorConfiguration="DataServiceBehavior"> 
     <endpoint name="DataServiceHost" 
        address="" 
        binding="webHttpBinding" 
        contract="System.Data.Services.IRequestHandler" /> 

    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
     <behavior name="DataServiceBehavior"> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
+0

嗯...我以爲我試過,但我想我做錯了莫名其妙。 無論如何,到達那裏......我現在明白了錯誤。 我目前正在處理的一個處理事實,我的消息類有一個枚舉(類型 - 錯誤,警告等)。在我的代碼中有不少枚舉 - 如果我不能使用它們中的任何一個,我會有點惱火:) 我想我要做的就是使用IgnoreProperties並添加其他屬性來將它們包裝爲更友好的類型到數據服務。 謝謝! – JohnL 2010-02-22 18:58:06

+0

如果有人想知道枚舉的東西,顯然你可以使用它們與一些額外的打字: http://msdn.microsoft.com/en-us/library/aa347875.aspx – JohnL 2010-02-24 22:39:23