У меня есть страница 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
Страница Razor не загружается, но ошибок нет ⇐ C#
Место общения программистов C#
-
Anonymous
1731422561
Anonymous
У меня есть страница Razor, на которой запущено несколько функций AJAX для получения данных и их обновления.
Страницы работают нормально локально и в НЕКОТОРЫХ рабочих экземплярах.
Но в некоторых случаях я получаю сообщение консоли (консоль Chrome) о том, что произошла ошибка 500. Я добавил журналы повсюду, и приложение, похоже, не дает сбоев (кроме того, если бы в приложении была ошибка как таковая, оно вышло бы из строя во ВСЕХ случаях).
Weid поведение, которое я наблюдаю в экземплярах, которые не работают, заключается в том, что (посредством ведения журнала) я видел, что нормальные экземпляры один раз вызывают метод OnGet, а затем все последующие вызовы являются OnPostIndexPartial, однако неисправные экземпляры называются OnGet выполняется ДВАЖДЫ, и тогда ничего не происходит.
Я даже добавил немного логики, чтобы гарантировать, что вызов происходит только один раз, и хотя сообщение теперь появляется только один раз, страница по-прежнему никогда не загружается (даже OnGet)
Я в тупике. Я занимаюсь этим уже несколько часов и, похоже, не могу понять, почему он даже не отображает начальную страницу (поэтому не выполняет никаких последующих onPartialPosts)
Если кто-нибудь когда-либо видел такое поведение вроде этого и есть несколько советов/советов по отладке или поиску проблем с этими экземплярами, я был бы очень благодарен
Заранее спасибо за ваше время
[b]РЕДАКТИРОВАТЬ[/b]
Это модель (некоторый код был удален) – единая модель обрабатывает петиции
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()
Подробнее здесь: [url]https://stackoverflow.com/questions/79177207/razor-page-not-loading-but-no-errors[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия