0
我在做一個「Ping」(ICMP)web應用程序,我需要在圖中顯示ping的時間結果(我使用的是shieldui) 。我對網絡開發非常陌生,所以我對框架的瞭解很有限。C#JQuery,在webform中加載數據並將它傳遞給另一個webform
在「ping.aspx」中,我加載了我想要ping的服務器列表。當我按下標有「ping」的按鈕時,Web應用程序將ping所有服務器,然後爲每個服務器打開一個帶有單個圖形的新窗口。
這是工作,直到在新窗口中
這裏裝載圖的一點是我grafica.aspx文件:
$(".pingAll").click(function() {
primerClick = true;
$("#txtLista option").each(function() {
var valorSvr = $(this).val();
//var container = $("#contenedorChart");
//var grafics = container.find("div");
//var idGrafics = grafics.length + 1;
//container.append("<div id=shieldui-chart" + valorSvr + "></div>");
refreshListaServidores(valorSvr)
});
//window.location.href = 'graficas.aspx';
});
function refreshListaServidores(valorSvr) {
$("#txtLista option").each(function() {
var valorSvr = $(this).val();
var container = $("#contenedorChart");
var grafics = container.find("div");
var idGrafics = grafics.length + 1;
container.append("<div id=shieldui-chart" + valorSvr + "></div>");
});
lista = lista + "|" + valorSvr;
var data = {
vl: lista
}
$.ajax({
type: "POST",
url: "ping.aspx/valoresLista",
cache: false,
async: true,
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var resultado = result.d
$.each(resultado, function (index, item) {
var resultPing = { items: [] };
var resultadoGrafica = { grafica: [null] };
$.each(item, function (inde, ite) {
var valMs = ite.ms;
var valServer = ite.servers;
var txtData = "Servidor: " + valServer + " | " + "Dirección: " + ite.address + " | " +
"Time to Live: " + ite.ttl + " | " + "Tamaño Buffer: " + ite.bufferSize + " | " +
"Tiempo en ms: " + valMs + "\n";
resultadoGrafica.grafica.push(valMs);
resultPing.items.push(txtData);
});
$("#txtResultPing").val(resultPing.items);
jQuery(function ($) {
$("div[id*='shieldui-chart" + valorSvr + "']").shieldChart({
axisX: {
axisType: 'linear',
ticksColor: 'yellow',
borderColor: 'yellow',
min: 1,
max: 40
},
theme: "dark",
primaryHeader: {
text: "Gráfico de: " + valorSvr
},
exportOptions: {
image: false,
print: false
},
dataSeries: [{
seriesType: "line",
collectionAlias: "Tiempos en ms",
data: resultadoGrafica.grafica
}]
});
});
});
}, error: function (result, xhr, ajaOptions, throwError) {
var vainaconvaina = result + xhr + ajaOptions + throwError;
}
});
}
並在後面的代碼,在C#我有
[WebMethod]
public static List<List<dataResult>> valoresLista(string vl)
{
dataResult dataRes = new dataResult();
HttpContext.Current.Session["pingas"] = vl;
Ping ping = new Ping();
string contentLista = vl;
string[] contentListaArray = contentLista.Split('|');
List<dataResult> listaPing = new List<dataResult>();
List<List<dataResult>> listaGral = new List<List<dataResult>>();
foreach (string word in contentListaArray)
{
dataRes = new dataResult();
if (!string.IsNullOrEmpty(word.ToString()))
{
try
{
listaPing = new List<dataResult>();
for (int i = 1; i <= 40; i++)
{
dataRes = new dataResult();
ping = new Ping();
PingReply pingreply = ping.Send(word);
if (pingreply.Status == IPStatus.Success)
{
dataRes.servers = Convert.ToString(word);
dataRes.address += Convert.ToString(pingreply.Address);
dataRes.ms += Convert.ToInt32(pingreply.RoundtripTime);
dataRes.ttl += Convert.ToInt32(pingreply.Options.Ttl);
dataRes.bufferSize += Convert.ToString(pingreply.Buffer.Length.ToString());
dataRes.errr += "Successful";
}
else
{
dataRes.errr = Convert.ToString("Host de destino no disponible o inalcanzable");
}
listaPing.Add(dataRes);
}
}
catch (Exception err)
{
PingReply pingreply = ping.Send(word);
if (pingreply.Status == IPStatus.DestinationHostUnreachable || pingreply.Status == IPStatus.DestinationNetworkUnreachable || pingreply.Status == IPStatus.TimeExceeded || pingreply.Status == IPStatus.TtlExpired || pingreply.Status == IPStatus.Unknown)
{
string emailEnProceso = "Se le informa ";
emailEnProceso += Environment.NewLine;
emailEnProceso += Environment.NewLine;
emailEnProceso += "que el servidor " + vl;
emailEnProceso += Environment.NewLine;
emailEnProceso += Environment.NewLine;
emailEnProceso += "podría estar presentando fallos debido a que en el último minuto no estuvo respondiento las solicitudes de ping ";
emailEnProceso += Environment.NewLine;
emailEnProceso += "Tome las medidas necesarias. ";
emailEnProceso += Environment.NewLine;
emailEnProceso += Environment.NewLine;
emailEnProceso += "something";
emailEnProceso += Environment.NewLine;
emailEnProceso += "www.somethingelse.com";
string asunto = "Falla en el servidor " + vl;
enviarMail(emailEnProceso, asunto, "[email protected]");
listaPing.Add(dataRes);
}
else
{
dataRes.errr = Convert.ToString(err.Message);
}
}
listaGral.Add(listaPing);
}
}
return listaGral;
}
我很確定這段代碼沒有那麼糟糕,但我需要知道的是如何將數據從「ping.aspx」「移動」到「grafica.aspx」。
也許我真的很接近,但實際上我並不真正瞭解如何組織自己的網絡表單。
非常感謝。
在jquery的成功發佈後,我得到一個int值,它表示每個ping事件的時間(以毫秒爲單位),並且我得到應用程序發出ping事件的服務器列表。它應該爲選擇框中的每個服務器創建一個圖表。我想將這些數據傳遞給第二個.aspx網頁來構建圖表。它在單個.aspx網頁中運行得非常好,但請求說它應該在另一個網頁中。非常感謝您的幫助,我很感激 – Waramato