2017-09-23 3 views
0

asp.netコア2.0にasp.netアプリケーションを移植しているので、これが間違っている可能性があることを理解しています(主に負荷の速度に関する最適化ページ)しかし、私はとにかく質問をするだろう。結果を待つ間にasp.netコア2.0でwcf ayncサービスを呼び出す

データをフェッチしているときにクエリが正常に動作していますが、クライアント側でダウンロードするためにデータベースからファイルパスを取得する際に問題が発生しました。私はファイルの全モデルを必要としないので、私は3つのフィールドdtoをクライアント側に持っています。ファイルに関する情報(場所、サイズ、ファイル名)を補うのは問題です。 AzureのWCFサービスは、エンティティフレームワークのデータベースへのリンクを保持しています。コードは、データベースからデータを取得するのを待つことなく、さらに続行され、クライアントに送信されるdtoオブジェクトを埋めるためにnull参照例外がスローされます。

をダウンロードするためにマークされていますファイルを取得するために、これは、クライアント側

internal async Task<AnimalDocument> GetAnimalDocument(int id) 
    { 

     var data = await _context.GetAnimalDocumentAsync(id); 
     var result = JsonConvert.DeserializeObject<AnimalDocument>(data); 

     return result; 
    } 

上の私のデータアクセスがあると私がnull例外を取得場所です

public SeriliazedFile GetFile(int id, int type) 
    { 
     var result = new SeriliazedFile(); 
     if (type == 1) 
     { 
      var data = _context.GetHumanFile(id); 
      result.FileName = data.Result.DocumentName; 
      result.FilePath = data.Result.DocumentLocation; 
      result.FileSize = data.Result.FileSize.Value; 
     } 
     else if (type == 2) 
     { 
      var data = _context.GetAnimalDocument(id); 
      result.FileName = data.Result.DocumentName; 
      result.FilePath = data.Result.DocumentLocation; 
      result.FileSize = data.Result.FileSize.Value; 

     } 
     return result; 
    } 

WCFから取得するタスクを返す前に非同期要求が結果を待つように強制する方法はありますか? _context.GetAnimalDocument(id).Wait();を試してみました。しかし、何も結果がなくてもそれ以上の進歩は起こっていません。私は、ページに送られたAjaxリクエストが200を返し、デッドロックのようなものを引き起こした後にデータを取得するトリガが発生したことに気付きました。誰かが私の周りに仕事を与えることができればそれはいいと思うが、私は自分自身で最終的にそれを理解するだろうと確信しているが、とにかく時間は稀である。

答えて

0

これを投稿して申し訳ありませんが、何らかの形でWCFやコードに問題はありませんでした。asyncはasp.netコア2.0で問題なく動作していました。私はまだ関数の型の前に[FromBody]を持っているというコンセプトに適応していますが、私は1つを見逃してしまい、デフォルトでid 0を得ています(なぜ、0を得るのか分かりません)データがない場合でも整数フィールドにはnullがありますが、それは問題ではありません)。私のidフィールドとデータレイヤーにnull値が返されていたので、後でnull参照例外が発生しました。

関連する問題