Gokul
Gokul

Reputation: 21

Service Stack API - System.InvalidOperationException - ServiceStack.ServiceStackHost.OnEndRequest(IRequest request)

We are using Service Stack Web API for our web application. On prod server all the functionalities will work but for every request an error is generated as below when we make a request to server.

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

Here is the Stack:

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

at System.Collections.Hashtable.HashtableEnumerator.MoveNext() at ServiceStack.ServiceStackHost.OnEndRequest(IRequest request)

Code that is throwing error.

 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;
    }

I am not sure why I am getting this error.

Upvotes: 2

Views: 120

Answers (1)

mythz
mythz

Reputation: 143359

ServiceStack's OnEndRequest goes through and disposes all the per-instance or per-request dependencies for that request so you should check the IDisposable implementations of your dependencies that are used in that request, particularly any of them which uses a Hashtable.

Upvotes: 1

Related Questions