C# 所有文件类型的一个.ashx通用处理程序?

C# 所有文件类型的一个.ashx通用处理程序?,c#,asp.net,httphandler,file-type,C#,Asp.net,Httphandler,File Type,我已经阅读了MSDN的基本信息和一些教程。根据我到目前为止所学的知识,我已经能够生成两个.ashx处理程序,我称之为ImageHandler.ashx和PDFHandler.ashx。它们做了您所期望的事情:分别返回图像或PDF。对于这两个处理程序,在ProcessRequest方法中,我将context.Response.ContentType分别设置为“image/jpeg”和“application/pdf”,然后使用context.Response.BinaryWrite(bytes)写

我已经阅读了MSDN的基本信息和一些教程。根据我到目前为止所学的知识,我已经能够生成两个.ashx处理程序,我称之为ImageHandler.ashx和PDFHandler.ashx。它们做了您所期望的事情:分别返回图像或PDF。对于这两个处理程序,在
ProcessRequest
方法中,我将
context.Response.ContentType
分别设置为“image/jpeg”和“application/pdf”,然后使用
context.Response.BinaryWrite(bytes)
写入结果,到目前为止,这一切正常

但是,我希望允许用户能够下载任何文件,而不管其类型如何。我真的需要为每种文件类型创建不同的处理程序吗


我可以只需要一个.ashx文件,然后根据文件类型(我将通过文件名的子字符串获得)使用switch语句吗?即使我这样做了,那些非标准的文件类型呢,比如说.xyz文件?在这种情况下,我应该将
content.Response.ContentType设置为什么?

否,您不需要多个处理程序,尤其是在基本操作相同的情况下。是的,您可以使用任何类型的逻辑来决定将响应内容类型设置为什么。对于您不知道的内容,请使用
application/octet-stream
。您还应该考虑设置“内容配置”标题,它提供了一个机会来建议它是否应该显示“内联”(即在浏览器中),或提示作为下载-以及逻辑文件名是什么(而不是一些ASHX页面)。.

您可以设置
内容类型:应用程序/octet流
,并让浏览器根据文件扩展名处理操作。

两个很好的答案,很抱歉,我只能选择一个。我认为现在您应该为您提供的每种文件类型设置安全标题并设置明确的内容类型。这正是我需要的。现在工作得很好。