我正在測試一個有兩個表(衛星和頻道)的數據庫,因爲我需要使用WCF。幸運的是,我現在已經嘗試了我所知道的和網上的一切,並且我無法解決問題。SQL Server到WCF開發的錯誤
這是合同IService.cs
[ServiceContract]
public interface IService
{
[OperationContract]
List<Satalite> SelectSatalite(int satNum);
[OperationContract]
List<Satalite> SataliteList();
[OperationContract]
List<Channel> ChannelList(int satNum);
[OperationContract]
String Sat(int satNum);
}
服務這是Service.svc.cs
文件
public class Service : IService
{
DataDbDataContext DbObj = new DataDbDataContext();
public List<Satalite> SataliteList()
{
var satList = from r in DbObj.Satalites
select r;
return satList.ToList();
}
public List<Satalite> SelectSatalite(int satNum)
{
var satList = from r in DbObj.Satalites
where r.SateliteID == satNum
select r;
return satList.ToList();
}
public List<Channel> ChannelList(int satNum)
{
var channels = from r in DbObj.Channels
where r.SateliteID == satNum
select r;
return channels.ToList();
}
public String Sat(int satNum)
{
Satalite satObj = new Satalite();
satObj = DbObj.Satalites.Single(p => p.SateliteID == satNum);
return satObj.Name;
}
}
每當我嘗試運行前三使用wcftestclient.exe
測試時他們,我得到一個錯誤,最後一個沒有問題的作品。
底層連接已關閉:連接意外地關閉了 。
服務器堆棧跟蹤:
在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(引發WebException 引發WebException,HttpWebRequest的請求,HttpAbortReason abortReason)
在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(時間跨度 超時)
在System.ServiceModel.Channels.RequestChannel.Request(消息消息,時間跨度 超時)
在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息,時間跨度超時)
在System.ServiceModel.Channels.ServiceChannel.Call(字符串動作, 布爾單向,ProxyOperationRuntime操作,對象[]插件, 對象[]奏,時間跨度超時)
在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService( IMethodCallMessage 包括methodCall,ProxyOperationRuntime操作)
在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即時聊天 消息)[0]時異常重新拋出:
在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage( IMessage reqMsg,IMessage retMsg)
在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA,的Int32類型)在IService.SelectSatalite(的Int32 satNum)
在ServiceClient.SelectSatalite(的Int32 satNum)內部異常:底層連接已關閉:連接 意外關閉。
在System.Net.HttpWebRequest.GetResponse()
在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(時間跨度 超時)
我的理解是錯誤的定製情況如果我使用.net編譯器的已知類型(例如,int
或string
),那麼它就可以正常工作。幸運的是,我沒有找到解決方案。
感謝您的回覆,我與你,我返回了太多的數據(你說的每個!!約8〜12列),但我的程序需要它。所以,我問有沒有一種方法可以延長時間,以避免超時或增加信息的大小,因爲我需要這些信息!?!。另外,我測試了一次選擇某些行的想法,但即使count = 1,我仍然有錯誤!!! – darking050
@ darking050:是的,當然你可以增加超時和允許消息的大小 - 但這只是真正的問題之上的「樂隊幫助」 - 爲什麼你需要傳輸這麼多的數據?也許你應該使用不同的方法,而不是通過服務傳輸,如果它是這麼多的數據.... –