Abcpdf HttpContent.Create ASP.net mvc上下文中的FileNotFoundException但文件存在

时间:2016-04-22 14:24:49

标签: c# asp.net-mvc file pdf abcpdf

我使用Abcpdf,

有时我在创建HttpMultipartMimeForm之后进入生产FileNotFoundException,并使用HttpContent.Create(方法使用路径

此代码运作良好的主要部​​分

PDF是上下文中的创建

  1. ASP.NET网站A名为
  2. 致电网站B以生成PDF
  3. 网站B在B上调用url,用于HTML到PDF abcpdf方法。
  4. 在B的上一个请求完成后,网站A通过HttpClient HttpMultipartMimeForm向服务器C发送文件,有时会抛出异常,但是当我在服务器上查看文件存在时
  5. A和B在同一台机器上并共享相同的目录。

    当我尝试访问该文件时,我认为该文件未完成写入磁盘。但是如何解决这个问题呢?

    感谢。

    1。服务器A

    using (HttpClient pdfClient = new HttpClient("http://" + ConfigurationManager.AppSettings["xxx"]))
    {
        using (HttpResponseMessage message = pdfClient.Get(UrlDictionary.callxxx(xxxID, xxxID)))
        {
            message.EnsureStatusIsSuccessful();
            message.Content.ReadAsStream();
        }
    }
    

    2。服务器B

    theDoc.Save(HostingEnvironment.ApplicationPhysicalPath + "/xxx/" + ".pdf");
    theDoc.Clear();
    

    第3。服务器A

     HttpMultipartMimeForm request = new HttpMultipartMimeForm();
    
      FileInfo info = new FileInfo(pathFile);
      HttpFormFile file = new HttpFormFile();
      file.Content = **HttpContent.Create(info, "multipart/form-data")**; (Exception FileNotFoundException)
      file.FileName = info.Name;
      file.Name = "file";
    
    
      request.Files.Add(file);
      request.Add("id", id);
    
      using (HttpResponseMessage response = client.Post(
          string.Format("/xxx/{0}", id), 
          request.CreateHttpContent()))
      {
          ExceptionIfBadRequest(response);
          Contrat contrat = (Contrat)FromXml(response.Content.ReadAsString(), typeof(Contrat));
          return contrat;
      }
    

1 个答案:

答案 0 :(得分:0)

检查PDF文件和目录的权限,检查文件是否附加了一些“区域”信息。