EDITION & РЕШЕНИЯ: Потратив несколько часов на этой проблеме, я понял, что Extjs диаграмма метода сохранения выгружает страницы, когда он загружает файл. Поскольку я очищаю переменную сеанса, когда пользователь закрывает страницу, мои переменные сеанса автоматически очищаются. Прошу прощения за неправильный вопрос..net переменные сессии будут удалены после запроса
Теперь неудобно, что этот метод загрузки запускает функцию очистки сеанса, но на моем локальном хосте он отменяется сразу же, пока он не отменяется на сервере.
ORIGINAL ВОПРОС: Я использую ExtJS диаграммы с моим MVC3 проекта. И я пытаюсь сохранить диаграммы, используя их методы сохранения. Диаграмма отправляет данные в «http://svg.sencha.io/» для визуализации и предоставления ответа в соответствии с моим типом запроса.
Чтобы дать пользовательские имена для диаграмм, я написал свой собственный код, чтобы получить изображение svg и преобразовать его в png. Я направил необработанные данные на свой сервер. Он работал хорошо. Я мог бы сохранять изображения в виде png-файлов и давать пользовательские имена. Однако этот запрос очищает мои переменные сеанса. Я думал, что проверка ввода может привести к потере данных сеанса, и я попробовал заголовок [ValidateInput(false)]
и Request.Unvalidated.Form["input"]
. Каждый результат одинаковый. Я думаю, что это связано с проверкой ввода. Что я должен сделать, чтобы решить проблему сеанса. Я не хочу отключать InputValidation для всех методов. Ниже вы можете найти мои коды.
Сервер C#:
public void imageConverter(int width, int height, string type)
{
try
{
string svg = Request.Unvalidated.Form["svg"];
string dateStr = DateTime.Today.ToString("yyyyMMdd");
byte[] bytes = new byte[svg.Length * sizeof(char)];
System.Buffer.BlockCopy(svg.ToCharArray(), 0, bytes, 0, bytes.Length);
MagickReadSettings settings = new MagickReadSettings();
settings.Width = width;
settings.Height = height;
settings.Format = ImageMagick.MagickFormat.Svg;
using (MagickImage image = new MagickImage(bytes,settings))
{
image.Format = MagickFormat.Png;
byte[] data = image.ToByteArray();
Response.ContentType = type;
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + dateStr + "\"");
Response.BinaryWrite(data);
Response.End();
}
}
catch (Exception ex)
{
}
}
ExtJS Код:
myButton.on('click', function (button, e, eOpts) {
Ext.MessageBox.confirm('Sure?', 'Save as?', function (choice) {
if (choice == 'yes') {
Ext.draw.engine.ImageExporter.defaultUrl ='/Statistics/imageConverter';
myChart.save({
type: 'image/png'
});
}
});
});
@tkcn Итак, это было решение? – sra
нет, я понял, что проблема совершенно другая, и я нашел способ справиться с этим. Спасибо за ваш вклад. – tkcn