C# 如何允许在IIS 7.5中下载任何文件

C# 如何允许在IIS 7.5中下载任何文件,c#,asp.net,http,iis,C#,Asp.net,Http,Iis,我正在开发一个通过HTTP下载任何类型文件的应用程序。我已在本地系统中配置IIS进行测试。我添加了一个用于文件共享的虚拟目录。早些时候,我得到500个文件下载的内部服务器错误 然后我添加了一个咪咪类型。*。但它可以下载扩展名为的文件。我有一些文件名后面没有扩展名,甚至连一个点都没有。对于这些文件,我发现404.17未找到错误。 另外,当我请求下载文件时,它会尝试打开而不是下载。示例包括网页(html、xml、ASPXPNG等)。对于这些文件类型,我发现在http请求(应用程序/八位字节流)中设置

我正在开发一个通过HTTP下载任何类型文件的应用程序。我已在本地系统中配置IIS进行测试。我添加了一个用于文件共享的虚拟目录。早些时候,我得到500个文件下载的内部服务器错误

然后我添加了一个咪咪类型。*。但它可以下载扩展名为的文件。我有一些文件名后面没有扩展名,甚至连一个点都没有。对于这些文件,我发现404.17未找到错误。

另外,当我请求下载文件时,它会尝试打开而不是下载。示例包括网页(html、xml、ASPXPNG等)。对于这些文件类型,我发现在http请求(应用程序/八位字节流)中设置内容类型将使文件下载。在IIS中,我还必须将所有文件设置为正确的MIMI类型

但对于这一点,我必须使用POST请求。但是如果我使用POST,我将得到405方法不允许的

我尝试了所有的解决方案,但都没有成功

请告诉我哪里出了问题


另外,如果您有任何正确的IIS配置文件或任何链接,请告诉我。

无需注册MIME类型。
您可以为文件下载创建一个代理aspx网页(Download.aspx),该网页只需将文件发送到客户端即可

在该页面的加载事件中,写入以下内容:

Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-disposition",
"inline;filename=test.pdf");
Response.WriteFile(file);
Response.Flush();
Response.End();
yourHttpResponse.ContentType = "application/octet-stream";

我认为您可以通过使用通配符mime类型映射来实现这一点。有关更多详细信息,请参见以下链接


我认为您需要添加特定的mime类型以下载文件。在第一个阶段,您需要从要下载文件的浏览器点击url。如果进展顺利,那么您应该检查您的代码问题一定存在


如果文件未下载,则需要向IIS添加mime类型。为此,单击添加填充文件扩展名,例如“.db”,然后将mime类型填充为“file/download”,您将下载该文件。

可下载文件的标准由mime类型
应用程序/octet流表示

因此,您可以将响应的MIME类型设置为:

Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-disposition",
"inline;filename=test.pdf");
Response.WriteFile(file);
Response.Flush();
Response.End();
yourHttpResponse.ContentType = "application/octet-stream";

任何浏览器遇到此类MIME类型时,都会将文件作为字节流下载。

谢谢@nitinsawand。问题是我不允许使用405方法。因为我不能使用GET请求来设置请求头。如果我使用POST,我会发现egt 405错误。它还能发送ASPX吗?@Amit:是的,在我的服务器上我可以下载任何文件。@库马尔:你能把你所做的事情贴出来吗?