C# asp.net ActionResult无法在控制器中查看静态数据

C# asp.net ActionResult无法在控制器中查看静态数据,c#,asp.net,asp.net-mvc,pdf,C#,Asp.net,Asp.net Mvc,Pdf,我有一个像这样的简单静态类 public static class pdfDataSingle { public static PdfData pdf { get; private set; } public static void SetData(PdfData data) { pdf = data; } } 我首先在MVC控制器中这样设置类 pdfDataSingle.SetData(pdfData); 我已经确认数据都在那里 然后我需要

我有一个像这样的简单静态类

public static class pdfDataSingle
{
    public static PdfData pdf { get; private set; }

    public static void SetData(PdfData data)
    {
        pdf = data;
    }
}
我首先在MVC控制器中这样设置类

pdfDataSingle.SetData(pdfData);
我已经确认数据都在那里

然后我需要从操作结果中获取字节,所以首先我调用

 pdf.Add(CreateCertificatePart(CertificatePart.NewStatementOfFact));
所以这看起来像这样

private byte[] CreateCertificatePart(CertificatePart part)
    {
        var customSwitches = string.Format(
            "--print-media-type " +
            "--margin-top 10mm " +
            "--margin-bottom 10mm " +
            "--margin-left 10mm " +
            "--margin-right 10mm " +
            "--encoding utf-8 " +
            "--minimum-font-size 11 " +
            "--zoom 1.0 " +
            "--disable-smart-shrinking"
        );

        var pdfResult = new ActionAsPdf(part.ToString()) { CustomSwitches = customSwitches };

        var pdfBytes = pdfResult.BuildFile(ControllerContext);

        return pdfBytes;
    }
被调用的操作方法如下。。但是静态数据pdfDataSingle为空

public ActionResult NewStatementOfFact()
    {
        try
        {

            AppInsightLog.LogInfo(pdfDataSingle.pdf.Schedule.PolicyNumber, "NewStatementOfFact");
            return View("StatementOfFact", pdfDataSingle.pdf.Schedule);
        }
        catch (Exception ex)
        {
            //AppInsightLog.LogError(ex, quoteReference);
            return new HttpStatusCodeResult(400, "NewStatementOfFact");
        }
    }
当我在本地运行它时,它可以正常工作。。操作结果在静态类(在我的控制器外部声明)中看到数据,但在发布到azure时不会看到。。有人知道为什么会这样吗


谢谢

将数据(PdfData)序列化为json字符串并保存到数据库中。然后,您可以在action方法中读回它并将其反序列化。

所以我还应该说,我正在尝试从razor视图中获取pdf字节。。如果没有rotaviva还有更好的方法,我洗耳恭听:)我有很多类似NewStatementOffact的ActionResult方法,我不想每次都再次调用数据库。。获取模型的所有数据需要大量的数据库工作,我宁愿只调用一次。。把它储存起来。。然后将其重新用于各种操作方法,否则速度会非常慢。您将此行放置在何处
pdfDataSingle.SetData(pdfData)我在一个post方法GenerateNewCertificate(另一个actionResult)中调用了它,这是我获取静态类的所有数据,然后我调用CreateCertificatePart获取所有部分的数据。我不是pdf爱好者,但如果静态字段为null,则有两个原因:1。你在设置前就得到了这个字段,2。在某个时刻,您将该字段设置为null。建议:如果您的pdf数据从未更改,请在应用程序启动时设置它,如果每个用户的u'r数据更改,请不要使用静态的东西。如果您根据请求更改它,则使用实例类;如果有多个步骤,使用应该考虑<代码> Cache < /C> >按实例类用键(如session),你是指单体吗?但这是一个带有静态成员的类。我尝试了类似Session[“pdfData”]=pdfData的方法;并试图读取该值,但该值也是空的:/a会话最好能正常工作。