ASHX 处理程序无法与我的网络外的客户端正常工作
Posted
技术标签:
【中文标题】ASHX 处理程序无法与我的网络外的客户端正常工作【英文标题】:ASHX Handler not working correctly with clients outside my network 【发布时间】:2019-01-11 15:30:37 【问题描述】:我有一个供我组织内外的人员使用的应用程序。此应用程序同时导出 Excel (.xlsx) 和 PDF 文件。我在文件导出时遇到问题。它适用于我网络上的人,但我网络外的人收到“文件读取错误。文件类型不受支持或文件已损坏”,并且文件将只有 127 字节而不是正确的大小(通常大约 2 兆字节)。我需要网络之外的人能够成功下载和打开文件。
我还尝试运行针对每种特定文件类型定制的处理程序类,我尝试打开包含文件的目录以让“每个人”都具有读取权限,但我真的不确定如何解决这个问题。 Web 服务器正在运行 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;
【问题讨论】:
如果你在文本编辑器中打开这个127字节的文件,会不会出现错误信息? 【参考方案1】:想通了。这是一个网络问题,我的网络人员已将我移至新服务器,组织外部的人看到的是旧服务器,但内部的人看到的是新版本。我让他们让我组织以外的人看到新服务器,这解决了我的问题。
【讨论】:
以上是关于ASHX 处理程序无法与我的网络外的客户端正常工作的主要内容,如果未能解决你的问题,请参考以下文章
SharePoint Web 部件:无法对 ashx 处理程序进行 jquery ajax 调用
支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)