У меня есть приложение, которое используется людьми внутри и вне моей организации. Это приложение экспортирует файлы Excel (.xlsx) и PDF. У меня проблемы с экспортом файлов. Он отлично работает для людей, которые находятся в моей сети, но люди, находящиеся за пределами моей сети, получают сообщение «Ошибка чтения файла. Тип файла не поддерживается или файл поврежден», и размер файла будет только 127 байт вместо правильного размера (обычно около 2 мегабайт). Мне нужно, чтобы люди за пределами моей сети могли успешно загружать и открывать файлы.
Я также пытался запустить классы обработчиков, приспособленные для каждого конкретного типа файла, я пытался открыть каталог с файлом, чтобы «Все» имели доступ для чтения, я действительно не уверен, как это исправить. Веб-сервер работает под управлением IIS 10.
public class fileExportHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string fileToExport = "";
string fileName = "exportedFile";
string fileType = "";
System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;
if ((request.QueryString["fileToExport"] != null))
{
fileToExport = request.QueryString["fileToExport"].ToString();
string[] fileParts = fileToExport.Split('.');
fileType = fileParts[1];
if ((request.QueryString["fileName"] != null))
{
fileName = request.QueryString["fileName"].ToString();
}
}
fileToExport = @"E:\Website\Cascade\" + fileToExport;
//send the file to the browser
System.Web.HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.ClearHeaders();
Response.Clear();
Response.Buffer = true;
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
if(fileType == "pdf")
contentType = "application/pdf";
Response.ContentType = contentType;
Response.AddHeader("content-disposition", "attachment; filename=" + fileName + "." + fileType);
Response.TransmitFile(fileToExport);
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
public bool IsReusable
{
get
{
return false;
}
}
}