これは、10 番目のクラス A セクションのすべての学生を取得するために DocumentDB のページングを実装しようとしているコードです。
コンソールアプリケーションでは問題なく動作しています。
しかし、Web アプリケーションで実行しようとすると、非同期呼び出し (つまり、query.ExecuteNextAsync()) でプロセスが終了し、例外も発生しません。
public List<Student> allStudents()
{
int class = 10;
string section = "A";
string documentType = "Student";
List<Student> students = new List<Student>();
string DocumentDBCollectionLink = "CollectionLink";
DocumentClient dc = new DocumentClient(new Uri("https://xyz.documents.azure.com:443/"), "authenticationKey==");
IDocumentQuery<Student> query;
String continuation = "";
do
{
FeedOptions feedOptions = new FeedOptions { MaxItemCount = 10, RequestContinuation = continuation };
query = dc.CreateDocumentQuery<Student>(DocumentDBCollectionLink, feedOptions).Where(d => d.Type.Equals(documentType) && d.Class.Equals(class) && d.Section.Equals(section)).AsDocumentQuery();
FeedResponse<Student> pagedResults = this.getRecords(query).Result;
foreach (Student system in pagedResults)
{
students.Add(system);
}
continuation = pagedResults.ResponseContinuation;
} while (!String.IsNullOrEmpty(continuation));
return students;
}
private async Task<FeedResponse<Student>> getRecords(IDocumentQuery<Student> query)
{
FeedResponse<Student> pagedResults = await query.ExecuteNextAsync<Student>();
return pagedResults;
}
コンソール アプリケーションでは実行されているのに、Web アプリケーションでは実行されていない理由がわかりません。
これで何か問題がありますか?
または、結果を取得するためのより良い方法はありますか?
どんな助けでも大歓迎です。
前もって感謝します。