2
우리는 웹 응용 프로그램에 서비스 스택 웹 API를 사용하고 있습니다. prod 서버에서는 모든 기능이 작동하지만 모든 요청에 대해 서버에 요청할 때 아래와 같은 오류가 발생합니다. 여기 서비스 스택 API - System.InvalidOperationException - ServiceStack.ServiceStackHost.OnEndRequest (IRequest 요청)
"System.InvalidOperationException: Collection was modified; enumeration operation may not execute".
은 스택입니다 :
던지고 ServiceStack.ServiceStackHost.OnEndRequest (IRequest 요청)
코드에서 System.Collections.Hashtable.HashtableEnumerator.MoveNext() 에서
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
오류.
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) 왜 '널 (null)'응답을 얻는 지 알지 못합니다. 알아 내기 위해 서비스를 디버깅해야합니다. – mythz
몇 가지 정보를 추가하십시오. 우리는 딱딱한 환경에서만이 오류가 발생합니다. 로컬/Dev/QA에서 발생하지 않는 것이 약간 이상합니다. 나는 서비스 스택 개발에 익숙하지 않다. 'IDisposable' 구현을 어떻게 확인할 수 있습니까? Thanks @mythz – Gokul