2014-07-16 3 views
2

안녕하세요, asp.net mvc5 서버 및 컨트롤을 사용하여 큰 파일을 업로드 오전 TempData.on 내 로컬 컴퓨터에서이 스트림을 절약하고 성공적으로 큰 files.but 업로드 호스팅 서버에서 그것은 실패합니다. 나는 MaxAllowedContent와 ExcutionTimeOut Limit를 증가 시키려고했지만 그것들 중 아무 것도 시도하지 않았습니다.TempData MVC5에서 스트림 저장 C#

여기 내 컨트롤러 액션

public ActionResult UploadTransactionPDF() 
     { 
     private readonly List<MemoryStream> _PdfImage = new List<MemoryStream>(); 

     private readonly List<string> _PdfImageNames = new List<string>(); 
      try 
      { 
       Gateway.Instance.Logger.LogInfo(string.Format(_formatProvider,"[TransactionController -> UploadTransactionPDF ]: method started : Save pdf to memory.")); 

       if (CheckFileExist()) 
       { 
        if (TempData[TransactionRef.PdfFiles.ToString()] != null) 
        { 
         _PdfImage.Clear(); 
         _PdfImage.AddRange(TempData[TransactionRef.PdfFiles.ToString()] as List<MemoryStream>); 
        } 

        if (TempData[TransactionRef.PdfFileName.ToString()] != null && !string.IsNullOrEmpty(TempData[TransactionRef.PdfFileName.ToString()].ToString())) 
        { 
         _PdfImageNames.Clear(); 
         _PdfImageNames.AddRange(TempData[TransactionRef.PdfFileName.ToString()] as List<string>); 
        } 

        for (int a = 0; a < Request.Files.Count; a++) 
        { 
         if (!_PdfImageNames.Contains(Request.Files[a].FileName)) 
         { 
          MemoryStream ms = new MemoryStream(); 
          Request.Files[a].InputStream.CopyTo(ms); 
          _PdfImage.Add(ms); 
          _PdfImageNames.Add(Request.Files[a].FileName); 
         } 
        } 

        TempData[TransactionRef.PdfFiles.ToString()] = _PdfImage; 
        TempData[TransactionRef.PdfFileName.ToString()] = _PdfImageNames; 
        ViewBag.Info = "pdf"; 
        ViewBag.ImageUploadInfo = Language.ImageSavedMessage.ToString(); 
       } 
       else 
       { 
        ViewBag.ImageUploadInfo = Language.NoFileMessage.ToString(); 
       } 

       ViewBag.FileNames = _PdfImageNames; 
       Gateway.Instance.Logger.LogInfo(string.Format(_formatProvider, "[TransactionController -> UploadTransactionPDF ] : method exited .")); 
       return View("_PDFFiles"); 
      } 
      catch (Exception ex) 
      { 
       string errorInfo = string.Format(_formatProvider, "[TransactionController -> UploadTransactionPDF ] : Error : '{0}' occurred while saving pdf to memory.",ex.Message); 
       Gateway.Instance.Logger.LogError(errorInfo,ex); 
       throw new Exception(errorInfo, ex); 
      } 
     } 

감사합니다!

+0

호스트 된 서버에서 어떤 오류 메시지가 나타 났습니까? –

+0

안녕하세요 제프 때 같은 시간에 2 분 정도 시간이 많이 걸리는 다음 오류가 연결 시간 초과 걸리는 추가 단추를 클릭합니다. –

+0

안녕하세요 Jeff 저는 같은 시간에 Add 버튼을 클릭 할 때 2 분 정도 소요됩니다 (프로덕션 서버에서만 작동합니다). 그런 다음 연결 시간 초과 오류가 발생합니다. 나는 또한 당신에게 내 설정 파일을 보여주고있다 탭 아래에

답변

0

dev 환경의 web.config 파일에 다음과 같은 내용이 있는지 확인할 수 있습니다. ddddd는 요청에서 허용해야하는 최대 값이어야합니다. 도스를 위해 자신을 여는 곳까지 높이 지마. 요청 길이는 파일 크기가 아니라 클라이언트에서 서버로의 전체 요청 일 것입니다.

<configuration> 
    <system.web> 
    <httpRuntime targetFramework="4.5" maxRequestLength="ddddd" /> 
    </system.web> 
</configuration> 

configuration 및 system.web 요소 사이에 위치 요소를 추가하여 하나의 컨트롤러 동작으로 지역화 할 수 있습니다.

+0

안녕하세요 Bozman ur response.i에 대한 귀하의 제안을 시도한 후에도. 다음은 시도한 구성 값의 다른 집합이지만 그들 중 누구도 나를 위해 일하지 않았습니다. <에 httpRuntime executionTimeout = "999999"maxRequestLength의 = "512000"/>

+0

해당 내용을 포함해야합니다. 앱 풀 자체의 가상 메모리 제한을 확인 했습니까? 그것은 재활용 될 수 있으며 요청을 잃을 수 있습니다. IIS -> 응용 프로그램 풀 -> 올바른 응용 프로그램 풀 -> 고급 설정을 선택하고 맨 아래에 가상 메모리 제한 (kb)이라는 설정이 있어야하며 무제한으로 0인지 확인해야합니다. – Bozman