SQL Server データベースからデータを読み取る WCF サービスを作成しました。すべての文字列を返すメソッドを呼び出すと正常に動作しますが、int を返すメソッドを呼び出すと、タイムアウトとデータが多すぎるというエラーでクラッシュします。これは意味がありません...
これが私のWebサービスコードです:
public List<Track> getTrack()
{
List<Track> trackList = new List<Track>();
SqlConnection dbConn = connectToDb();
string _selectQuery = string.Format("SELECT Date, Track, KeyID FROM hdData ORDER BY Track");
try
{
dbConn.Open();
SqlCommand cmd = new SqlCommand(_selectQuery, dbConn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Track Dat = new Track();
Dat.Date = (string)reader[0];
Dat.TrackName = (string)reader[1];
Dat.KeyId = (int)reader[2];
trackList.Add(Dat);
}
dbConn.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
return trackList;
}
フィールドを取り出すと正常にKeyId
動作します...KeyId
データベースではタイプとして定義されてint
おり、自動インクリメントフィールドです。
私はそれをキャストしようとしましたvarchar
が、同じ結果になりました...
私は何を間違っていますか?
よろしく、ディーン
正確なエラーと Track クラスは次のとおりです。
OK、正確なエラーは次のとおりです。
受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。クォータを増やすには、適切なバインド要素で MaxReceivedMessageSize プロパティを使用します。
サーバー スタック トレース:
System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded()
で System.ServiceModel.Channels.HttpInput.GetMessageBuffer()
で System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(ストリーム inputStream)
で System.ServiceModel.Channels.HttpInput
System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan タイムアウト)での.ParseIncomingMessage(Exception& requestException)
System.ServiceModel.Channels.RequestChannel.Request(メッセージ メッセージ、TimeSpan タイムアウト)
で System.ServiceModel.Dispatcher.RequestChannelBinder. Request(メッセージ メッセージ、TimeSpan タイムアウト)
System.ServiceModel.Channels.ServiceChannel.Call (文字列アクション、Boolean oneway、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、TimeSpan タイムアウト)
で System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall、ProxyOperationRuntime 操作)
System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage メッセージ) で[0] で例外が再スローされました: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (
IMessage reqMsg, IMessage retMsg)
で
)
Service1Client.getTrack() で内部例外:
受信メッセージの最大メッセージ サイズ クォータ (65536) を超えました。クォータを増やすには、適切なバインド要素で MaxReceivedMessageSize プロパティを使用します。
Track クラスは次のとおりです。
[DataContract]
public class Track
{
string _Date, _TrackName;
int _KeyId;
[DataMember]
public string Date
{
get { return _Date; }
set { _Date = value; }
}
[DataMember]
public string TrackName
{
get { return _TrackName; }
set { _TrackName = value; }
}
[DataMember]
public int KeyId
{
get { return _KeyId; }
set { _KeyId = value; }
}
}