Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TempData未在FileContentResult中保留值_C#_Tempdata_Filecontentresult - Fatal编程技术网

C# TempData未在FileContentResult中保留值

C# TempData未在FileContentResult中保留值,c#,tempdata,filecontentresult,C#,Tempdata,Filecontentresult,我有以下代码: [Authorize] [HttpGet] public FileContentResult DownloadMsgAsPdf(string FileId, string outer = "") { var Results = (SearchResult)TempData["Results"]; var msg = Results.emails[FileId]; ... return File(pdf

我有以下代码:

    [Authorize]
    [HttpGet]
    public FileContentResult DownloadMsgAsPdf(string FileId, string outer = "")
    {
        var Results = (SearchResult)TempData["Results"];
        var msg = Results.emails[FileId];
...
        return File(pdfBytes, System.Net.Mime.MediaTypeNames.Application.Octet, msg.Id + ".pdf");
     }
现在只要运行一次(点击一个链接),一切都会很好。但是,在第二次单击它时(没有其他更改或调用),它会出错,结果为空。我想这意味着TempData正在被清除,但这怎么可能呢

以下是完整的代码(如果需要):

    [Authorize]
    [HttpGet]
    public FileContentResult DownloadMsgAsPdf(string FileId, string outer = "")
    {
        var Results = (SearchResult)TempData["Results"];
        var msg = Results.emails[FileId];

        TempData.Keep();

        msg.BodyHTML = System.Web.HttpUtility.HtmlDecode(msg.BodyHTML);

        var htmlContent = String.Format("<center><p><b>Case ID</b>: " + msg.Id
        + "   <b>User ID</b>: " + Session["userid"]
        + "   <b>Privileged</b>: ");
        if (msg.Tags != null)
        {
            htmlContent += msg.Tags.ContainsKey("privileged");
        }
        else
        {
            htmlContent += "False";
        }
        htmlContent += "   <b>Downloaded</b>: " + DateTime.Now.ToString("g") + "</center>"
        + " <p> -- Forwarded message -- </p> "
        + " <p><b> From :</b> <a href='#'>" + msg.From + "</a> </p> "
        + " <p><b> Date:</b> Mon, oct 25 2010 at 4:42 PM  </p> "
        + " <p> <b>Subject:</b> " + msg.Subject + " </p> "
        + " <p><b> To:</b> " + msg.To + " </p> "
        + " <p><b> Cc: </b> </p> "
        + " <div> "
        + " <ul> ";
        if(msg.attachementList != null){
            if (!msg.attachementList.Any())
            {
                htmlContent += "<text> "
                + "<li><label style='color:gray'>No attachment</label></li></text>";
            }
            else
            {
                foreach (var attachment in msg.attachementList)
                {
                    var filename = System.IO.Path.GetFileName(attachment);
                    htmlContent += "<text> "
                    + "<li><a href='#'>" + filename + "</a></li></text>";
                }
            }
        }
        htmlContent += "</ul>"
        + "</div>"
        + "<div padding: 5px;'>"
        + msg.BodyText
        + "</div>"
        + "</div>";

        var pdfBytes = (new NReco.PdfGenerator.HtmlToPdfConverter()).GeneratePdf(htmlContent);

        if (outer != "")
        {
            return File(pdfBytes, System.Net.Mime.MediaTypeNames.Application.Octet, msg.Id + ".pdf");
        }

        return new FileContentResult(pdfBytes, "application/pdf");
    }
[授权]
[HttpGet]
public FileContentResult DownloadMsgAsPdf(字符串FileId,字符串outer=”“)
{
var Results=(SearchResult)TempData[“Results”];
var msg=Results.emails[FileId];
TempData.Keep();
msg.BodyHTML=System.Web.HttpUtility.HtmlDecode(msg.BodyHTML);
var htmlContent=String.Format(“Case-ID:”+msg.ID
+“用户ID:+会话[“用户ID”]
+“特权:”;
如果(msg.Tags!=null)
{
htmlContent+=msg.Tags.ContainsKey(“特权”);
}
其他的
{
htmlContent+=“假”;
}
htmlContent+=“下载:”+DateTime.Now.ToString(“g”)+“
+“--转发的消息--

” +“发件人:

” +日期:2010年10月25日星期一下午4:42 +主题:“+msg.Subject+”

” +“至:“+msg.To+”

” +“Cc:

” + " " +“
    ”; 如果(msg.attachementList!=null){ 如果(!msg.attachementList.Any()) { htmlContent+=“” +“
  • 无附件”
  • ”; } 其他的 { foreach(msg.attachementList中的var附件) { var filename=System.IO.Path.GetFileName(附件); htmlContent+=“” +“
  • ”; } } } htmlContent+=“
” + ""
+“
TempData
意味着您只能获得一次。我看到您使用了
TempData.Keep()
,但此方法仅对相同的http上下文有效。我认为您可以使用
会话
缓存
而不是
临时数据

谢谢您的响应,有什么方法可以多次使用它吗?我尝试了会话,但出现了相同的错误。