.NET RESTアプリケーションで作業中に奇妙な問題が発生しています。私はあらゆる種類の要求をうまく行うことができますが、この1つのlong-polling-GET割り込み要求は、返されたListが空の場合にのみ成功します。説明するために:返されたときにGETリクエストが機能しないList <>には項目が含まれています
public async Task<List<Person>> UpdateRequest()
{
try
{
await LongPolling(10000);
}
catch (TaskCanceledException)
{
Console.WriteLine("Long polling GET was cancelled.");
var fooList = new List<Person>();
fooList.Add(new Person("tim", "bar")); // <- adding this line breaks the request
return fooList;
}
return null; //Timeout, aka nothing happened
}
を.Add()
行がない場合、mysite.com/update
(長いGETのとその後の遮断)を呼び出すことが予想される
<ArrayOfPerson xmlns="http://schemas.datacontract.org/stuff" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>
を返しますが、List
は項目が含まれている場合、私が取得しますインスタント "応答を取得できませんでした"。 Console.Writelineが表示されます。 List
がC#で動作する方法を誤解していますか?または、戻り値のタイプがTask<List<Person>>
で間違っていますか?
編集:通常の配列で試してみましょう:Person[0]
は、その中に項目があるかどうかにかかわらず、より大きな配列「応答を取得できませんでした。
結果がコレクションの場合は、決して 'null'を返してはいけません。むしろ空リストを返す。それではイテレータなどを壊しません。 '新しいリストを返す()'または静的な 'EmptyPersonList'を作成します。 –
質問には関係ありませんが、本当です:) –
@Fildorはい。長いポーリングが中断されない場合、GETリクエストが保持され、「タイムアウト」(この場合はnull、変更されます)が返されます。 –