2017-05-14 5 views
2

Webアプリケーション用のService Stack Web APIを使用しています。プロードされたサーバー上では、すべての機能が動作しますが、すべての要求に対して、サーバーに要求を出すと、以下のようにエラーが生成されます。サービススタックAPI - System.InvalidOperationException - ServiceStack.ServiceStackHost.OnEndRequest(IRequest request)

ここ
"System.InvalidOperationException: Collection was modified; enumeration operation may not execute". 

がスタックです:ServiceStack.ServiceStackHost.OnEndRequest(IRequest要求)投げている

コードで

System.InvalidOperationException: Collection was modified; enumeration operation may not execute. 

System.Collections.Hashtable.HashtableEnumerator.MoveNextで() エラー。

public UserPetsResponse Any(GetUserPetsDTO request) 
    { 
     UserPetsResponse res = new UserPetsResponse(); 
     if (request.subscriberID != null) 
     { 
      try 
      { 
       var controller = new ExactTargetControllers.ExactTargetControllers(); 
       res = controller.GetActivePetsOfSubscriber(request.subscriberID); 
      } 
      catch (Exception ex) 
      { 
       res.responseMessage = ResponseMessage.Error; 
       ErrorLogger errorlog = new Service.ErrorLogger(); 
       errorlog.LogInElmah(ex); 
      } 
     } 
     return res; 
    } 

public UserPetsResponse GetActivePetsOfSubscriber(string subscriberID) 
    { 
     UserPetsResponse res = new UserPetsResponse(); 
     List<PetModel> pets = new List<PetModel>(); 
     APIObject[] Results; 
     String requestID; 
     String status; 
     // Instantiate the retrieve request 
     RetrieveRequest rr = new RetrieveRequest(); 
     rr.ObjectType = String.Format("DataExtensionObject[{0}]", _CustomerKey_PetDE);//required 
                         // Setting up a simple filter 
     SimpleFilterPart sf = new SimpleFilterPart(); 
     sf.SimpleOperator = SimpleOperators.equals; 
     sf.Property = "SubscriberID"; 
     sf.Value = new String[] { subscriberID }; 
     //Add Filter 
     rr.Filter = sf; 
     rr.Properties = new string[] { "SubscriberID", "petName", "petBirthday", "petSpecies" 
             ,"petBreed","_CustomObjectKey","IsActive","petID"};//required //Any Column on the Data Extension 
     status = _frameWork.Retrieve(rr, out requestID, out Results); 
     for (int i = 0; i < Results.Length; i++) 
     { 
      PetModel pet = new PetModel(); 
      pet = PetMapper(Results[i]); 
      if (pet.isActive) 
      { 
       pets.Add(pet); 
      } 

     } 
     if (status.Contains("OK")) 
     { 
      res.responseMessage = ResponseMessage.OK; 
     } 
     else 
     { 
      res.responseMessage = ResponseMessage.Error; 
      res.errorMessage = status; 
     } 
     res.pets = pets; 
     return res; 
    } 

私はこのエラーを取得しています理由はわかりません。

答えて

1

ServiceStackのOnEndRequestが通過し、あなたがそのリクエストに使用されているあなたの依存関係のIDisposable実装、Hashtableを使用している彼らの、特にいずれかを確認する必要がありますので、その要求のためのすべてのインスタンスごと、または要求の依存関係を配置します。

+0

返信いただきありがとう@mythz。私はいくつかの理由で私のサービスを呼び出すと、最初の要求はnullであり、すぐに正しい要求を取得することに気づいた。これを避けるために彼らの方法はありますか? – Gokul

+0

@Gokulなぜあなたは 'ヌル'レスポンスを得ているのか分かりませんが、あなたのサービスをデバッグして調べる必要があります。 – mythz

+0

いくつかの情報を追加します。私たちはこの環境をプロダクト環境だけで実現しようとしています。ローカル/ Dev/QAでは発生していないのはちょっと奇妙です。私はサービススタックの開発に慣れていません。 'IDisposable'の実装をどうやって確認できますか?ありがとう@mythz – Gokul

関連する問題