Страница Razor не загружается, но ошибок нетC#

Место общения программистов C#
Ответить
Anonymous
 Страница Razor не загружается, но ошибок нет

Сообщение Anonymous »

У меня есть страница Razor, на которой запущено несколько функций AJAX для получения данных и их обновления.
Страницы работают нормально локально и в НЕКОТОРЫХ рабочих экземплярах.
Но в некоторых случаях я получаю сообщение консоли (консоль Chrome) о том, что произошла ошибка 500. Я добавил журналы повсюду, и приложение, похоже, не дает сбоев (кроме того, если бы в приложении была ошибка как таковая, оно вышло бы из строя во ВСЕХ случаях).
Weid поведение, которое я наблюдаю в экземплярах, которые не работают, заключается в том, что (посредством ведения журнала) я видел, что нормальные экземпляры один раз вызывают метод OnGet, а затем все последующие вызовы являются OnPostIndexPartial, однако неисправные экземпляры называются OnGet выполняется ДВАЖДЫ, и тогда ничего не происходит.
Я даже добавил немного логики, чтобы гарантировать, что вызов происходит только один раз, и хотя сообщение теперь появляется только один раз, страница по-прежнему никогда не загружается (даже OnGet)
Я в тупике. Я занимаюсь этим уже несколько часов и, похоже, не могу понять, почему он даже не отображает начальную страницу (поэтому не выполняет никаких последующих onPartialPosts)
Если кто-нибудь когда-либо видел такое поведение вроде этого и есть несколько советов/советов по отладке или поиску проблем с этими экземплярами, я был бы очень благодарен
Заранее спасибо за ваше время
РЕДАКТИРОВАТЬ
Это модель (некоторый код был удален) – единая модель обрабатывает петиции
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using DTEmbarcado.Controllers;
using System.Linq;
using System;
using System.Text;
using System.Collections;
using System.Text.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using DTEmbarcado.DTOS;
using System.IO;
using System.Threading;
using static System.Net.Mime.MediaTypeNames;

namespace DTEmbarcado.Pages
{
public class IndexModel : PageModel
{
public bool initialPetitionDone = false;

public IndexModel()
{

}

public JsonResult OnPostHeartbeatPartial(string name)
{
GlobalConstants.logger.insertaLog("OnPostHeartbeatPartial", DTLogger.INFO);
Object json = null;
try
{

if (!string.IsNullOrEmpty(name))
{
json = System.Text.Json.JsonSerializer.Serialize("OK");
}
}
catch (Exception ex)
{
GlobalConstants.logger.insertaLog($"OnPostHeartbeatPartial ERROR: {ex.Message} : {ex.StackTrace} : {ex.InnerException}", DTLogger.ERROR);
}
return new JsonResult(json);
}

public void OnGet()
{
GlobalConstants.logger.insertaLog("GET Index", DTLogger.INFO);
try
{
if (!initialPetitionDone)
{
initialPetitionDone = true;

//SOME CODE
}
}
catch (Exception ex)
{
GlobalConstants.logger.insertaLog($"GET Index ERROR: {ex.Message} : {ex.StackTrace} : {ex.InnerException}", DTLogger.ERROR);
}
}

public JsonResult OnPostIndexPartial(string visualizationOptions, string searchPorts, string searchVars)
{
GlobalConstants.logger.insertaLog("ON POST INDEX PARTIAL", DTLogger.INFO);
var json = "";
try
{
//SOME CODE
this.Data = result;
json = System.Text.Json.JsonSerializer.Serialize(this.Data);
}
catch (Exception ex)
{
GlobalConstants.logger.insertaLog($"OnPostIndexPartial ERROR: {ex.Message} : {ex.StackTrace} : {ex.InnerException}", DTLogger.ERROR);
}
return new JsonResult(json);
}
}
}

Это javascript, выполняющийся в cshtml (это много кода):
@page
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@model DTEmbarcado.Pages.IndexModel
@{
ViewData["Title"] = "Title";
}






@try
{
@if (Model.Data != null)
{
//Some code
}
}
catch (Exception ex)
{
GlobalConstants.logger.insertaLog($"Ha ocurrido un error cargando Model.Data: {ex.Message}\n {ex.InnerException} \n {ex.StackTrace}",DTLogger.ERROR);
}



@section scripts{

@*GLOBALS*@

var sendRequest = true;
var sendHeartbeat = false;
function pop(div) {
document.getElementById(div).style.display = 'block';
}

function hide(div) {
document.getElementById(div).style.display = 'none';
}


@*HEARTBEAT*@

var refreshTime = 2000;
const currentUrl = window.location.href;

$(function () {
setInterval(setHeartbeat, refreshTime);
setHeartbeat();
});

function setHeartbeat(){
if (sendHeartbeat){
pop('popDiv');
var xhr = $.ajax({
type: "POST",
timeout: 1000,
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
},
url: '/?handler=HeartbeatPartial',
data: {
name: name
},
dataType: 'json',
headers: {
'Content-encoding': 'gzip'
},
success: function (data) {
hide('popDiv');
sendHeartbeat = false;
sendRequest = true;
},
error: function (xmlhttprequest, textstatus, message) {
if (textstatus === "timeout") {
xhr.abort();
}
pop('popDiv');
sendRequest = false;
sendHeartbeat = true;
}
})
}
}
//# sourceURL=heartbeatSource


@* REFRESH SCRIPT *@

var refreshTime = 1000;
var VOArray = [];

$(function () {
setInterval(loadTable, refreshTime);
loadTable();
});

function loadTable() {
//TIMEOUT
var isDataReceived = false;
//SOME CODE
//FLAG SETTING
if(sendRequest){
hide('popDiv');
//AJAX CALL
var xhr = $.ajax({
type: "POST",
timeout: 3000,
beforeSend: function (xhr) {
//console.log("Sending POST request");
xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
},
url: '/?handler=IndexPartial',
data: {
visualizationOptions: visualizationOptions,
searchPorts: searchPorts,
searchVars: searchVars
},
dataType: 'json',
headers:{
'Content-encoding':'gzip'
},
success: function (data) {
keys = []
isDataReceived = true;
var jsonObject = JSON.parse(data);
if(Object.keys(jsonObject).length === 0){
$("#valuesTable tbody tr").remove();
}else{
$.each(jsonObject, function(index, variable){
keys.push(variable.name)
if(document.getElementById(variable.name)){
document.getElementById(variable.name+"Value").innerText = variable.value;
document.getElementById(variable.name+"LastUpdate").innerText = variable.lastUpdate;
}
else{
addRow(variable)
}
})
}
$('#valuesTable tr').each(function (index, tr) {
var name = tr.id
if (name !== "") {
if (!keys.includes(name)) {
document.getElementById(tr.id).remove();
}
}
})
},
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
xhr.abort();
}
else if (textstatus === "error"){
pop('popDiv');
sendRequest = false;
sendHeartbeat = true;
}
}
})
}
}
//# sourceURL=ChromeConsoleDebug

}

@Html.AntiForgeryToken()


Подробнее здесь: https://stackoverflow.com/questions/791 ... -no-errors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»