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 调用

Android Toast无法正常工作(App崩溃)

棘轮和 WSS 无法正常工作

支持 JSONP 的 ASP.NET 通用 HTTP 处理程序 (.ashx)

如何在 ASP.NET MVC 中使用通用处理程序 (ASHX)?

使用 Group By 选择无法正常工作