Я создал многопользовательское приложение с asp. net mvc. Каждый пользователь может войти в систему и увидеть свой счет, выставленный стимулсофт. Это нормально, когда все видят отчет, но если кто-нибудь попытается распечатать или экспортировать отчет одновременно, он увидит счет другого человека.
Вот сценарий:
1- User1 переходит на свою страницу и видит свой Счет-фактуру1 (ОК)
2- Пользователь2 переходит на свою страницу и видит свой Счет-фактуру2 (ОК)
3- Пользователь2 нажимает кнопку печати / экспорта в стимулсофт и видит Invoice2 на своей распечатанной / загруженной странице (OK)
4- Пользователь1 нажимает кнопку печати / экспорта вtimulsoft и видит Invoice2 на своей распечатанной / загруженной странице (Not OK)
Итак, я думаю, что данные User1 переопределяются пользователем User2 где-то на сервере (возможно, httpcontext). Что мне делать, чтобы этого не произошло? Видеть конфиденциальную информацию других людей опасно. Вот мой код:
public ActionResult PrintSnapshot()
{
string empID= Session["empID"].ToString();
var invoice = new MRSRepository().GetInvoiceByEmployeeID(empID);
StiReport report = new StiReport();
report.Load(Server.MapPath("~/Report/PrintInvoice.mrt"));
report.Compile();
report["Title"] = "Your Invoice";
report["empID"] = empID;
report["..."] = "...";
report.Render();
return StiMvcViewer.GetReportSnapshotResult(this.HttpContext, report);
}
public ActionResult ViewerEvent()
{
return StiMvcViewer.ViewerEventResult(this.HttpContext);
}
public ActionResult PrintResult()
{
return StiMvcViewer.PrintReportResult(this.HttpContext);
}
public FileResult ExportResult()
{
return StiMvcViewer.ExportReportResult(this.HttpContext);
}
public ActionResult Interaction()
{
return StiMvcViewer.InteractionResult(this.HttpContext);
}