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;
}
私はこのエラーを取得しています理由はわかりません。
返信いただきありがとう@mythz。私はいくつかの理由で私のサービスを呼び出すと、最初の要求はnullであり、すぐに正しい要求を取得することに気づいた。これを避けるために彼らの方法はありますか? – Gokul
@Gokulなぜあなたは 'ヌル'レスポンスを得ているのか分かりませんが、あなたのサービスをデバッグして調べる必要があります。 – mythz
いくつかの情報を追加します。私たちはこの環境をプロダクト環境だけで実現しようとしています。ローカル/ Dev/QAでは発生していないのはちょっと奇妙です。私はサービススタックの開発に慣れていません。 'IDisposable'の実装をどうやって確認できますか?ありがとう@mythz – Gokul