You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:使用C# WebClient/HttpClient无法下载Web服务器.lst文件的解决办法

问题描述

使用C#的WebClient类编写文件下载代码:

using (var Client = new WebClient())
{
    Client.DownloadFile(Source, Target);
}

下载.xml或.txt文件时正常,但下载.lst文件(资源管理器显示为“MASM Listing”文件)时出现404“未找到”错误,且已确认文件确实存在。已尝试在IIS中将.lst扩展名添加到允许列表,但问题依旧;改用HttpClient下载结果相同。

请问除了下载后重命名文件外,还有什么方法可以实现.lst文件的下载?

解决方案

1. 配置IIS的MIME类型

仅添加扩展名到允许列表可能不够,需要为.lst配置对应的MIME类型:

  • 打开IIS管理器,找到目标站点,进入MIME类型
  • 点击添加,扩展名填.lst,MIME类型可设为text/plain(纯文本类)或application/octet-stream(通用二进制流)
  • 保存配置后重启站点,再尝试下载

2. 检查并修正URL编码

若Source URL中包含特殊字符(如空格、中文等),可能导致服务器无法正确解析文件路径。可对URL中的文件名部分进行URL编码:

// 拆分基础路径与文件名,编码后拼接完整URL
string baseUrl = "http://your-server/path/";
string fileName = "example.lst";
string encodedFileName = System.Web.HttpUtility.UrlEncode(fileName);
string fullUrl = $"{baseUrl}{encodedFileName}";

using (var client = new WebClient())
{
    client.DownloadFile(fullUrl, Target);
}

3. 检查IIS请求过滤规则

确认IIS的请求过滤模块未阻止.lst文件:

  • 进入站点的请求过滤,切换到文件扩展名标签
  • 确保.lst在允许列表中,且无对应的拒绝规则
  • 同时检查隐藏段、隐藏文件设置,避免.lst被误判为隐藏资源

4. 添加自定义请求头

部分服务器会根据Accept请求头限制返回的文件类型,可添加通配符Accept头强制服务器返回文件:

WebClient实现

using (var client = new WebClient())
{
    client.Headers.Add(System.Net.HttpRequestHeader.Accept, "*/*");
    client.DownloadFile(Source, Target);
}

HttpClient实现

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(
        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*")
    );
    byte[] fileBytes = await client.GetByteArrayAsync(Source);
    await System.IO.File.WriteAllBytesAsync(Target, fileBytes);
}

5. 排查URL重写规则

若服务器启用了URL重写(如ASP.NET路由、IIS URL重写模块),需检查规则是否拦截了.lst请求:

  • 进入站点的URL重写,查看现有规则
  • 添加例外规则,允许.lst文件的请求直接通过

6. 验证URL路径准确性

确认Source URL的大小写、路径与服务器上的文件完全匹配:

  • Windows系统虽不区分大小写,但部分IIS配置可能启用了严格大小写检查
  • 直接在浏览器中访问Source URL,验证是否能正常下载,排除代码外的路径问题

另外,“MASM Listing”只是.lst文件的关联类型,本身不会被系统或服务器默认禁止下载,问题根源还是服务器配置或请求处理环节的限制。

内容的提问来源于stack exchange,提问作者Nigel Tunnicliffe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:22:48