asp.net 3.5 및 C#을 사용하여 SharePoint 2010에서 사용자 지정 타이머 작업 서비스를 만들고 있습니다.이 서비스에서 비즈니스 논리는 각 client.for에 대한 Excel 보고서로 응용 프로그램의 목록을 포함하는 zip 파일을 만들려면 zip 파일을 생성하고 zip 파일을 저장하고 경로가있는 하드 디스크에 저장하는 Ionic.zip 써드 파티 dll과 ZipFile 클래스를 사용하고 있습니다. 내 코드는 두 개의 foreach 루프를 포함하며 클라이언트의 목록과 클라이언트의 목록을위한 upper를 포함합니다. 클라이언트에는 no가있을 수 있습니다. 이러한 응용 프로그램을 zip 파일에 추가하여 하드 디스크에 저장하고이 파일을 메일에 첨부하여 클라이언트에 전송하지만 문제는 다음 클라이언트로 가기 전에 zip 파일을 삭제하려고한다는 것입니다. 하드 디스크에 어떤 파일이 아니지만 "다른 프로세스에서 사용하고 있기 때문에 프로세스가 파일에 액세스 할 수 없습니다."오류가 발생합니다. 또한 첨부 파일로 Excel 보고서의 출력 스트림을 첨부하려고했지만 제로 첨부 파일의 바이트. 이 오류를 어떻게 극복해야합니까? 내가프로세스가 SharePoint 2010 C# 코드의 다른 프로세스에서 사용 중이므로 프로세스가 파일에 액세스 할 수 없습니다.
foreach(list of clients)////may have no. of clients
{
string zipFileDownloadPath = String.Empty;
foreach(list of applications)//may have no. of applications
{
HttpWebResponse resp = (HttpWebResponse)httpReq.GetResponse();
Stream excelReport = resp.GetResponseStream();
zipFile.AddEntry(appName, excelReport);
}
zipFileDownloadPath = clientFolder + @"\" + client["client_name"] + "_" + reportDate + ".zip";
zipFile.Save(zipFileDownloadPath);
mail.Attachments.Add(new Attachment(zipFileDownloadPath));
smtp.Send(mail);//mail have body, subject etc.
//here I am deleting files
if (Directory.Exists(clientFolder))
{
Directory.Delete(clientFolder, true);//here I am getting error
}
}
아래의 간단한 코드를 부여하고 나는 나는 또한이 하드 디스크에 파일을 저장하기위한 어떤 요구를하고 메일 첨부 파일이 스트림을 첨부하지 말아야 있도록 출력 스트림에 ZipFile를 저장할 수 있도록 시도 위의 코드, 하지만 문제는, 출력 스트림에 적절한 바이트를 가져 오는 중이지만 메일을 보낼 때 첨부 파일이 0이됩니다.
outputStream .Seek(0, SeekOrigin.Begin);
또한 파일을 삭제하기 전에 확인 : 여기
foreach(list of clients)////may have no. of clients
{
foreach(list of applications)//may have no. of applications
{
HttpWebResponse resp = (HttpWebResponse)httpReq.GetResponse();
Stream excelReport = resp.GetResponseStream();
zipFile.AddEntry(appName, excelReport);
}
Stream outputStream = new MemoryStream();
zipFile.Save(outputStream);
mail.Attachments.Add(new Attachment(outputStream,"ZipFileName" MediaTypeNames.Application.Zip);));
smtp.Send(mail);//mail have body, subject etc.
}
실제로 전체 폴더가 아닌 파일을 삭제해야합니다. 2 명이 일하면 두 개의 파일이 생성됩니다. 이 경우 폴더를 삭제할 수 없습니다. –
파일을 삭제하려고했지만 여전히 동일한 오류가 발생합니다 –
친절하게이 문제를 해결하는 방법을 제안 해주세요. –