IIS stopped Working

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • khiat
    New Member
    • Jun 2012
    • 1

    IIS stopped Working

    I am developing web application using (C#) and (ASP.NET Web API) and MS SQL 2008 R2 and hosting on IIS7 in Windows Server 2008, All APIs return data in JSON

    When i call any API from any web browser and refresh the page to call again before the first call finishes it give me warning in the event viewer and after 0 to 5 minutes the worker process in the II7 stopped for about 2 minutes(hang) and all APIs calls from all users at the period of those 2 minutes don't work and event viewer give me an error:


    The Warning in the event viewer

    Event code: 3005
    Event message: An unhandled exception has occurred.
    Event time: 6/5/2012 3:29:10 PM
    Event time (UTC): 6/5/2012 1:29:10 PM
    Event ID: 63adcb812864465 cab58e9f870bcbb 92
    Event sequence: 5
    Event occurrence: 1
    Event detail code: 0

    Application information:
    Application domain: /LM/W3SVC/2/ROOT/AAA-2-129833765408950 000
    Trust level: Full
    Application Virtual Path: /AAA
    Application Path: C:\inetpub\wwwr oot\AAA\
    Machine name: MyMachine

    Process information:
    Process ID: 9860
    Process name: w3wp.exe
    Account name: NT AUTHORITY\NETWO RK SERVICE

    Exception information:
    Exception type: HttpException
    Exception message: The remote host closed the connection. The error code is 0x800704CD.
    at System.Web.Http .WebHost.HttpCo ntrollerHandler .EndProcessRequ est(IAsyncResul t result)
    at System.Web.Http .WebHost.HttpCo ntrollerHandler .System.Web.IHt tpAsyncHandler. EndProcessReque st(IAsyncResult result)
    at System.Web.Http Application.Cal lHandlerExecuti onStep.System.W eb.HttpApplicat ion.IExecutionS tep.Execute()
    at System.Web.Http Application.Exe cuteStep(IExecu tionStep step, Boolean& completedSynchr onously)



    Request information:
    Request URL: My API URL
    Request path: API Path
    User host address: My IP
    User:
    Is authenticated: False
    Authentication Type:
    Thread account name: NT AUTHORITY\NETWO RK SERVICE

    Thread information:
    Thread ID: 8
    Thread account name: NT AUTHORITY\NETWO RK SERVICE
    Is impersonating: False
    Stack trace: at System.Web.Http .WebHost.HttpCo ntrollerHandler .EndProcessRequ est(IAsyncResul t result)
    at System.Web.Http .WebHost.HttpCo ntrollerHandler .System.Web.IHt tpAsyncHandler. EndProcessReque st(IAsyncResult result)
    at System.Web.Http Application.Cal lHandlerExecuti onStep.System.W eb.HttpApplicat ion.IExecutionS tep.Execute()
    at System.Web.Http Application.Exe cuteStep(IExecu tionStep step, Boolean& completedSynchr onously)







    The Error in the event viewer


    An unhandled exception occurred and the process was terminated.

    Application ID: /LM/W3SVC/2/ROOT/AAA

    Process ID: 9860

    Exception: System.Aggregat eException

    Message: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread.

    StackTrace: at System.Threadin g.Tasks.TaskExc eptionHolder.Fi nalize()

    InnerException: System.Web.Http Exception

    Message: The remote host closed the connection. The error code is 0x800704CD.

    StackTrace: at System.Web.Http .WebHost.HttpCo ntrollerHandler .EndProcessRequ est(IAsyncResul t result)
    at System.Web.Http .WebHost.HttpCo ntrollerHandler .System.Web.IHt tpAsyncHandler. EndProcessReque st(IAsyncResult result)
    at System.Web.Http Application.Cal lHandlerExecuti onStep.System.W eb.HttpApplicat ion.IExecutionS tep.Execute()
    at System.Web.Http Application.Exe cuteStep(IExecu tionStep step, Boolean& completedSynchr onously)

    code behind

    Code:
      // GET /api/v1/content      
        [HttpGet]
        public IEnumerable<ME_API_V1.Models.Content> GetContent()
        {
            Request.Headers.Add("Accept", "application/json");
            List<ZMSLibrary.ME.Models.Content> contentList = new List<ZMSLibrary.ME.Models.Content>() ;
            try
            {
                //DateTime CurrentDateTime = DateTime.Now;
    
                var querystring = this.Request.RequestUri.Query;
                var parameters = HttpUtility.ParseQueryString(querystring);
    
                string userID = parameters["userID"];
                string countryCode = parameters["countryCode"];
                string language = parameters["language"];
                string categoryName = parameters["categoryName"];
                string subcategoryID = parameters["subcategoryID"];
                string count = parameters["count"];
                string start = parameters["start"];
                string platform = parameters["platform"];
                string imageSize = parameters["imageSize"];
    
    
    
                //Check IP Restiriction
                Restriction restiriction = new Restriction(ConfigurationManager.ConnectionStrings["AppSQLConnection"].ToString());
                bool allowedCheck = restiriction.IsUserAllowed(userID);
                if (!allowedCheck)
                {
                    dynamic json = new JsonObject();
                    json.message = "Authorized Only for Mobinil in Egypt";
                    var msg = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden);
                    msg.Content = new StringContent(json.ToString());
                    msg.Content.Headers.ContentType.MediaType = "application/json";
                    throw new HttpResponseException(msg);
                }
                else
                {
    
    
    
                    //Validate input data
                    if (InputValidation.isValidUserid(userID) &&
                        InputValidation.isValidCountryCode(countryCode) &&
                        InputValidation.isValidLanguage(language) &&
                        InputValidation.isValidCategory(categoryName) &&
                        InputValidation.isValidUserid(subcategoryID) &&
                        InputValidation.isValidPlatform(platform)
                        )
                    {
                        if (!InputValidation.isValidImageSize(imageSize))
                        {
                            imageSize = "high";
                        }
    
                        if (!InputValidation.isValidUserid(count) || !InputValidation.isValidUserid(start))
                        {
                            start = WebConfigurationManager.AppSettings["DefaultStart"];
                            count = WebConfigurationManager.AppSettings["DefaultCount"];
                        }
    
                        ContentOperations contentOperations = new ContentOperations();
                        contentList = contentOperations.getContent(subcategoryID, categoryName, count, start, countryCode, userID, ConfigurationManager.ConnectionStrings["AppSQLConnection"].ToString(), WebConfigurationManager.AppSettings["FileFolderName"], imageSize, language, platform);
                        if (contentList != null)
                        {
                            List<ME_API_V1.Models.Content> contentOutputList = new List<ME_API_V1.Models.Content>();
                            foreach (ZMSLibrary.ME.Models.Content c in contentList)
                            {
                                File tempFile = new File();
                                ME_API_V1.Models.Content cTemp = new ME_API_V1.Models.Content();
                                cTemp.contentID = int.Parse(c.ContentID);
                                if (c.Rating == "1")
                                    cTemp.userRating = "Like";
                                else if (c.Rating == "0")
                                    cTemp.userRating = "Dislike";
    
                                cTemp.date = String.Format("{0:G}", c.ContentDate);
    
                                //if (c.Provider.ContentProviderName != "")  //to make the value null instead of ""
                                cTemp.providerName = c.Provider.ContentProviderName;
                                //if (c.Provider.ContentProviderIcon != "")
                                cTemp.providerIconURL = c.Provider.ContentProviderIcon;
                                //if (c.Provider.ContentProviderImage != "")
                                cTemp.providerImageURL = c.Provider.ContentProviderImage;
    
                                if (language == "AR")
                                {
                                    //if (c.ContentArabicTitle != "")
                                    cTemp.title = c.ContentArabicTitle;
                                    //if (c.ContentArabicSubTitle != "")
                                    cTemp.subtitle = c.ContentArabicSubTitle;
                                    //if (c.ContentArabicDescription != "")
                                    cTemp.description = c.ContentArabicDescription;
                                }
                                else
                                {
                                    //if (c.ContentEnglishTitle != "")
                                    cTemp.title = c.ContentEnglishTitle;
                                    //if (c.ContentEnglishSubTitle != "")
                                    cTemp.subtitle = c.ContentEnglishSubTitle;
                                    //if (c.ContentEnglishDescription != "")
                                    cTemp.description = c.ContentEnglishDescription;
                                }
    
                                if (categoryName == "Music")
                                {
                                    foreach (ContentFile cf in c.ContentFiles)
                                    {
                                        if (cf.FileType.FileTypeName == "Icon")
                                            tempFile.iconURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Image")
                                            tempFile.imageURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Clip_High")
                                            tempFile.highVideoURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Clip_Low")
                                            tempFile.lowVideoURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Tone")
                                            tempFile.toneURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Song")
                                            tempFile.songURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "YouTube")
                                            tempFile.youtubeID = cf.ContentFileName;
    
                                    }
    
                                }
                                else if (categoryName == "News")
                                {
                                    foreach (ContentFile cf in c.ContentFiles)
                                    {
                                        if (cf.FileType.FileTypeName == "Icon")
                                            tempFile.iconURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Image")
                                            tempFile.imageURL = cf.ContentFileName;
    
                                    }
    
                                }
                                else if (categoryName == "Videos")
                                {
                                    foreach (ContentFile cf in c.ContentFiles)
                                    {
                                        if (cf.FileType.FileTypeName == "Icon")
                                            tempFile.iconURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Image")
                                            tempFile.imageURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Video_High")
                                            tempFile.highVideoURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Video_Low")
                                            tempFile.lowVideoURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "YouTube")
                                            tempFile.youtubeID = cf.ContentFileName;
    
                                    }
    
                                }
                                else if (categoryName == "Applications")
                                {
                                    foreach (ContentFile cf in c.ContentFiles)
                                    {
                                        if (cf.FileType.FileTypeName == "Icon")
                                            tempFile.iconURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "Image")
                                            tempFile.imageURL = cf.ContentFileName;
                                        else if (cf.FileType.FileTypeName == "App_Android" || cf.FileType.FileTypeName == "App_Nokia" || cf.FileType.FileTypeName == "App_Blackberry" || cf.FileType.FileTypeName == "App_iPhone")
                                        {                                           
                                                tempFile.appURL = cf.ContentFileName;                                               
                                        }
    
                                    }
    
                                }
    
                                cTemp.files = tempFile;
                                contentOutputList.Add(cTemp);
                            }
                            return contentOutputList;
    
                        }
    
                    }
    
                    if (contentList == null)
                        throw new Exception();
                    else
                    {
                        json.message = "Wrong or missing data";
                        var msg = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
                        msg.Content = new StringContent(json.ToString());
                        msg.Content.Headers.ContentType.MediaType = "application/json";
                        throw new HttpResponseException(msg);
                    }
                }
    
    
    
    
            }       
            catch (Exception ex)
            {
                if (ex is HttpResponseException)
                {
                    throw;
                }
                else
                {
                    json.message = "Error in System";
                    var msg = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError);
                    msg.Content = new StringContent(json.ToString());
                    msg.Content.Headers.ContentType.MediaType = "application/json";
                    throw new HttpResponseException(msg);
                }
            }
    
        }
    }
  • Frinavale
    Recognized Expert Expert
    • Oct 2006
    • 9749

    #2
    The exception is occurring in your application.
    I looked it up since I've never seen an AggregateExcept ion before and discovered that it is used extensively in the Task Parallel Library and Parallel LINQ (PLINQ).

    MSDN documentation on the exception suggests that you read these articles to handle these exceptions:
    Since I don't see you using Parallel coding in the code that you posted, I recommend that you check out your models.

    -Frinny

    Comment

    Working...