question

AppDev-1530 avatar image
0 Votes"
AppDev-1530 asked LanHuang-MSFT answered

mvc razor dropdown list filter works sometimes fails sometimes... getting a 503 Service jquery-3.3.1.js:9600 Unavailable Error

The Title states the main issue. Its beyond mind numbing why this silly thing works sometimes and Fails most of the time.

The setup is this. There is a form with a drop down list that is used to filter data that returns to the Razor form index screen.

The user clicks the filter and the results return. Work all the time in the visual studio debugger, but fails most of the time
when published to the server. Very frustrating and dumb.

Thank you for taking time to have a look.

218735-image.png

Here is this thing from the inspect element browswer option
218636-image.png


Here is are the source codes
The Form in razor cshtml

 @model IEnumerable<DUST.Models.WRITE_REQ_REQUEST_TBL>
    
 @{
     ViewBag.Title = "Index";
     Layout = "~/Views/Shared/_LayoutWRITE.cshtml";
 }
    
 <h3>ACTIVE REQUEST QUEUE</h3>
    
 <p>
     @Html.ActionLink("Add New Admin Work Request", "Create")
    
 </p>
    
 @*See:https://www.c-sharpcorner.com/article/different-ways-bind-the-value-to-razor-dropdownlist-in-aspnet-mvc5/*@
 <div class="col-md-3">
     @Html.DropDownList("StatusIDDL", new SelectList(ViewBag.DDL_Status, "STA_REQUEST_STATUS_ID", "STA_RQUEST_STATUS_ID_DISC"),"--STATUS--", new { @class = "form-control", style = "width:200px; ", @onchange = "FilterRequest(this.value,this.RequestIDDL)", id = "StatusIDDL" })
    
 </div>
    
 <div class="col-md-4">
     @Html.DropDownList("RequestIDDL", new SelectList(ViewBag.DDL_Type, "RQT_REQUEST_ID", "RQT_REQUEST_DESCRIPTION"), "--TYPE--", new { @class = "form-control", style = "width:300px; ", @onchange = "FilterRequest(this.value, this.StatusIDDL)", id ="RequestIDDL"})
    
 </div>
    
 <div class="col-md-2">
    
     <input type="button" value="CLEAR FILTER" class="btn btn-info" id="BTN_CLEAR_FILTER" onclick="ClearFilter()"/>
    
     @*@Html.ActionLink("Clear Filter", "Index")*@
    
 </div>
    
 <p  style="font-size:smaller; color:maroon">If Sort Fails Please Close and Restart WRITE</p>
    
 <br />
    
 <br />
    
 <br />
 <div class="form-horizontal" style="display:compact" id="Index">
    
    
     @*@RenderPage("~/Views/WRITE/_FilteredQueue.cshtml", ViewBag.FilteredRequest)*@
     @Html.Partial("~/Views/WRITE/_FilteredQueue.cshtml", Model)
    
 </div>
    
    
    
 @section Scripts
    
     {
     @Scripts.Render("~/bundles/jqueryval")
    
     <script type="text/javascript">
    
    
         function ClearFilter()
         {
             //Hide Filtered Queue Show Index Place Holders
             //Reset Drop Down list To Zero Index
    
    
             //See:https://www.webcodeexpert.com/2014/12/how-to-reset-aspnet-dropdownlist-or.html
             //$('#StatusIDDL').find('option:first').prop('--STATUS--', true);
             //$('#RequestIDDL').find('option:first').prop('--TYPE--', true);
    
             $("#StatusIDDL")[0].selectedIndex = 0;
             $("#RequestIDDL")[0].selectedIndex = 0;
    
             //let RequestDDL = document.getElementById("RequestIDDL");
             //RequestDDL.value =0; 
             //document.getElementById("StatusIDDL").value = "--STATUS--";
    
                
    
             //alert("Clearing Filters Dr. Shagwell")
    
             $('#FilteredQueue').hide();
             $('#Index').show();
    
             StatusID = null
             TypeID = null
    
             $.get("../Dust/Write/Index", { }, function (data) { });
    
         }
    
    
         function FilterRequest(StatusID, TypeID) {
    
    
             //Hide Index.
             $('#Index').hide();
             $('#FilteredQueue').show();
    
    
    
             //debugger;
    
             var StatusTypeVal = $('#StatusIDDL').val();
             var RequestTypeVal = $('#RequestIDDL').val();
    
             //alert("Check Vals")
             //alert(StatusTypeVal);
             //alert(RequestTypeVal);
    
             var StatusTypeTest = StatusTypeVal.length;
             var RequestTypeTest = RequestTypeVal.length;
    
    
    
             //alert("Check Len")
             //alert(StatusTest);
             //alert(RequestTest);
    
    
    
             //alert(StatusTypeVal.length);
    
    
    
             //debugger;
    
             //See: https://stackoverflow.com/questions/4244565/jquery-checking-if-the-value-of-a-field-is-null-empty
             //See: https://www.c-sharpcorner.com/UploadFile/337dfd/useful-way-to-call-controller-actions-from-html-using-jquery/
             //See: https://www.aspsnippets.com/Articles/Filter-Data-using-DropDownList-in-ASPNet-MVC.aspx
    
    
    
    
    
    
             if (StatusTypeTest !== null && RequestTypeTest == null) {
                 //debugger;
                 //alert("Dr Shagwell, Just Pass StatusID");
                 //alert(StatusID);
    
                 StatusID = StatusTypeVal;
                 TypeID = null
    
                 //debugger;
    
                 // $.get("/Write/FilteredQueue", { TypeFilter: TypeID, StatusFilter: StatusID }, function (data) { $("#FilteredQueue").html(data); });
    
    
                 //NOT USED
                 //$.get("/Write/FilteredQueue", { StatusFilter: StatusID }, function (data) { });
                 //$.ajax({ type: "GET", url: "/Write/FilteredQueue", data: { TypeFilter: TypeID, StatusFilter: StatusID }, sucess: function (data) { $("#Queue").html(data); }, error: function () { alert("Something Failed, Check CON"); } });
                 //NOT Used
    
             }
    
             else if (StatusTypeTest == null && RequestTypeTest !== null) {
    
                 StatusID = null
                 TypeID = RequestTypeVal;
    
    
                 //NOT USED
                 //debugger;
                 //alert("Yes Dr. Shagwell, Please Just Pass Request Type")
                 //alert(RequestTypeVal);
                 //NOT USED
    
                 //  $.get("/Write/FilteredQueue", { TypeFilter: TypeID, StatusFilter: StatusID }, function (data) { $("#FilteredQueue").html(data); });
    
             }
    
             else if (StatusTypeTest !== null && RequestTypeTest !== null) {
    
                 StatusID = StatusTypeVal;
                 TypeID = RequestTypeVal;
    
    
    
                 //NOT USED
                 //debugger;
                 //alert("Ah Dr. Shagwell, Both Have Values")
                 //alert(StatusID);
    
                 //alert(StatusTypeVal);
                 //alert(RequestTypeVal);
                 //NOT USED
    
              //   $.get("/Write/FilteredQueue", { TypeFilter: TypeID, StatusFilter: StatusID }, function (data) { $("#FilteredQueue").html(data); });
    
    
             }
             else
             {
                 StatusID =  null
                 TypeID = null
    
               //  $.get("/Write/FilteredQueue", { TypeFilter: TypeID, StatusFilter: StatusID }, function (data) { $("#FilteredQueue").html(data); });
             }
    
             $.post("../Write/Index", { TypeFilter: TypeID, StatusFilter: StatusID }, function (data) { $("#FilteredQueue").html(data); });
         }
             //NOT USED
             //$(document).ready(function(){
             //$("#StatusDDL").change(function(){url.action("Write","Index")})
             //})
             //NOT USED
             //https://www.educba.com/jquery-if-statement/
    
     </script>
    
 }

There are the drop down Filters
218690-image.png

The Data comes back to fill this partial view
218745-image.png

This is the javascripting function that is called
218635-image.png

The controller Looks like this: Index

         [HttpPost] //See This Error https://stackoverflow.com/questions/33377232/jquery-post-works-locally-but-not-on-server
                    //public ActionResult FilteredQueue(int? TypeFilter, int? StatusFilter)
         public ActionResult Index(int? TypeFilter, int? StatusFilter)
         {
    
             if (((StatusFilter == 2) || (StatusFilter == 6) || (StatusFilter == 5) || (StatusFilter == 8)) && (TypeFilter == null)) //Closed Request Exception  no Status Type Filter Return Everything that was parked Close and Colsed Completed
             {
                 var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID == StatusFilter).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
                 ViewBag.FilteredResults = FilteredList;
    
                 TypeFilter = null;
                 StatusFilter = null;
    
                 return PartialView("~/Views/Write/_FilteredQueue.cshtml", ViewBag.FilteredResults);
             }
             else if (((StatusFilter == 2) || (StatusFilter == 6) || (StatusFilter == 5) || (StatusFilter == 8)) && (TypeFilter != null)) //Closed Request Exception  no Status Type Filter Return Everything that was parked Close and Colsed Completed
             {
                 var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID == StatusFilter && Request.REQ_REQUEST_TYPE_ID == TypeFilter).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
                 ViewBag.FilteredResults = FilteredList;
    
                 TypeFilter = null;
                 StatusFilter = null;
    
                 return PartialView("~/Views/Write/_FilteredQueue.cshtml", ViewBag.FilteredResults);
             }
             else
             {
    
                 if (TypeFilter != null && StatusFilter != null)
                 {
                     var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID == StatusFilter && Request.REQ_REQUEST_TYPE_ID == TypeFilter && Request.REQ_REQUEST_STATUS != true && Request.REQ_REQUEST_STATUS != false).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
    
                     TypeFilter = null;
                     StatusFilter = null;
    
                     ViewBag.FilteredResults = FilteredList;
                 }
    
                 else if (TypeFilter != null && StatusFilter == null)
                 {
                     var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_TYPE_ID == TypeFilter && Request.REQ_REQUEST_STATUS != true && Request.REQ_REQUEST_STATUS != false).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
    
                     TypeFilter = null;
                     StatusFilter = null;
    
                     ViewBag.FilteredResults = FilteredList;
    
                 }
    
                 else if (TypeFilter == null && StatusFilter != null)
                 {
                     var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID == StatusFilter && Request.REQ_REQUEST_STATUS != true && Request.REQ_REQUEST_STATUS != false).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
    
                     TypeFilter = null;
                     StatusFilter = null;
    
                     ViewBag.FilteredResults = FilteredList;
                 }
    
    
                 //return View(ViewBag.FilteredResults);
                 else if (TypeFilter == null && StatusFilter == null)
                 {
                     var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID != 2 && Request.REQ_REQUEST_STATUS_ID != 5 && Request.REQ_REQUEST_STATUS_ID != 6 && Request.REQ_REQUEST_STATUS_ID != 8 && Request.REQ_REQUEST_STATUS != true && Request.REQ_REQUEST_STATUS != false).OrderBy(R => R.REQ_REQUEST_DATE).ToList();
                     /* && (Request.REQ_REQUEST_CLOSE_DATE - DateTime.Today).Value.TotalDays > 10).ToList();*/
    
                     TypeFilter = null;
                     StatusFilter = null;
    
                     ViewBag.FilteredResults = FilteredList;
    
                 }
                 else
                 {
                     var FilteredList = db.WRITE_REQ_REQUEST_TBL.Where(Request => Request.REQ_REQUEST_STATUS_ID != 2 || Request.REQ_REQUEST_STATUS_ID != 5 || Request.REQ_REQUEST_STATUS_ID != 6 || Request.REQ_REQUEST_STATUS_ID != 8 && Request.REQ_REQUEST_STATUS != true && Request.REQ_REQUEST_STATUS != false).ToList();
    
                     TypeFilter = null;
                     StatusFilter = null;
    
                     ViewBag.FilteredResults = FilteredList;
    
                 }
    
                 return PartialView("~/Views/Write/_FilteredQueue.cshtml", ViewBag.FilteredResults);
             }
         }


This is what gets called from the java scripting function from the index.cshtml
218746-image.png


         [HttpGet]
            public ActionResult FilteredIndex(int? TypeFilter, int? StatusFilter)
         {
    
    
             WRITE_TOOLS WriteTools = new WRITE_TOOLS();
             ViewBag.DDL_Status = WriteTools.DDL_REQUEST_STATUS();
             ViewBag.DDL_Type = WriteTools.DDL_REQUEST_TYPE();
    
    
    
             //See: https://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear
             ModelState.Clear();
    
             //TODO: Move this See This https://stackoverflow.com/questions/43176647/how-to-call-a-action-name-on-dropdown-change-in-mvc
             if (TypeFilter != null && StatusFilter != null)
             {
                 var FilteredList = db.VUE_WRITE_MASTER_VIEW.Where(Request =>Request.REQ_REQUEST_STATUS_ID == StatusFilter && Request.REQ_REQUEST_TYPE_ID == TypeFilter && Request.REQ_REQUEST_STATUS != true).ToList();
                 return View(FilteredList);
             }
    
             else if (TypeFilter != null && StatusFilter == null)
             {
                 var FilteredList = db.VUE_WRITE_MASTER_VIEW.Where(Request => Request.REQ_REQUEST_TYPE_ID == TypeFilter && Request.REQ_REQUEST_STATUS == false).ToList();
                 return View(FilteredList);
             }
    
             else if (TypeFilter == null && StatusFilter != null)
             {
                 var FilteredList = db.VUE_WRITE_MASTER_VIEW.Where(Request => Request.REQ_REQUEST_STATUS_ID == StatusFilter && Request.REQ_REQUEST_STATUS != true).ToList();
                 return View(FilteredList);
             }
    
             else if (TypeFilter == null && StatusFilter == null)
             {
                 var FilteredList = db.VUE_WRITE_MASTER_VIEW.Where(Request => Request.REQ_REQUEST_STATUS_ID != 2 || Request.REQ_REQUEST_STATUS_ID != 5 || Request.REQ_REQUEST_STATUS_ID != 6 || Request.REQ_REQUEST_STATUS_ID != 8).ToList();  /* && (Request.REQ_REQUEST_CLOSE_DATE - DateTime.Today).Value.TotalDays > 10).ToList();*/
                 return View(FilteredList);
             }
             else
             {
                 var FilteredList = db.VUE_WRITE_MASTER_VIEW.Where(Request => Request.REQ_REQUEST_STATUS_ID != 2 || Request.REQ_REQUEST_STATUS_ID != 5 || Request.REQ_REQUEST_STATUS_ID != 6 || Request.REQ_REQUEST_STATUS_ID != 8).ToList();  /* && (Request.REQ_REQUEST_CLOSE_DATE - DateTime.Today).Value.TotalDays > 10).ToList();*/
                 return View(FilteredList);
             }
    
         }


dotnet-aspnet-mvcdotnet-aspnet-webpages
image.png (6.4 KiB)
image.png (50.6 KiB)
image.png (17.1 KiB)
image.png (69.9 KiB)
image.png (143.1 KiB)
image.png (35.4 KiB)
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

1 Answer

LanHuang-MSFT avatar image
0 Votes"
LanHuang-MSFT answered

Hi @AppDev-1530,
The reason for 503 error because of the server is currently unable to handle the HTTP request due to a temporary overloading or maintenance of the server.
The implication is that this is a temporary condition which will be alleviated after some delay.
Some servers in this state may also simply refuse the socket connection, in which case a different error may be generated because the socket creation timed out.

You didn't provide code about jquery-3.3.1.js.
You can add the following code to display the error:

 $.ajax({
   url: 'Yoururl',
   type: 'post',
   data: {
     'YourData': 'YourData'
   },
   success: function(output) {},
   error: function(request, status, error) {
     alert(request.responseText);
     // Check error and do what ever you want to do
   },
 });
 }

I see you have asked the same question before.
https://docs.microsoft.com/en-us/answers/questions/806462/mvc-javascript-post-not-working-on-server-but-work.html
You can try one of them.

  • check the url in the network trace. its probably invalid.

  • Try a relative reference from the application root.

Best regards,
Lan Huang


If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.