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

.NET 4.8.1 ASP.NET Web Api中Server.MapPath路径错误致文件上传失败求助

解决ASP.NET Web API 4.8.1文件上传到项目App_Data路径问题

一、修正代码中的路径错误与目录处理

你的核心问题在于两点:一是未确保App_Data目录存在,二是文件移动时误用了虚拟路径而非物理绝对路径。以下是修正后的代码:

public class FilesController : ApiController
{
    [HttpPost]
    [Route("api/Files/Upload")]
    public async Task<string> Upload() 
    {
        // 获取App_Data的物理绝对路径
        var appDataPath = HttpContext.Current.Server.MapPath("~/App_Data");
        
        // 确保目标目录存在,不存在则自动创建
        if (!Directory.Exists(appDataPath))
        {
            Directory.CreateDirectory(appDataPath);
        }

        var provider = new MultipartFormDataStreamProvider(appDataPath);

        try 
        {
           await Request.Content.ReadAsMultipartAsync(provider);

            foreach (var file in provider.FileData) 
            {
                // 移除文件名前后的双引号(ContentDisposition返回的文件名默认带引号)
                var fileName = file.Headers.ContentDisposition.FileName.Trim('"');
                
                // 构建目标文件的物理绝对路径
                var targetFilePath = Path.Combine(appDataPath, fileName);

                // 处理目标文件已存在的情况(可选:覆盖或跳过)
                if (File.Exists(targetFilePath))
                {
                    File.Delete(targetFilePath);
                }
                File.Move(file.LocalFileName, targetFilePath);
            }
        }
        catch(Exception ex) 
        {
            return ex.Message;
        }

        return "File Uploaded!";
    }
}

二、修复Server.MapPath返回错误路径的问题

如果Server.MapPath返回的是C:/Users/MyName/Source/Repos/ProjectApi而非你的项目实际路径D:/Repo/Tests009/...,是因为IIS Express的站点部署路径配置错误:

  • 右键项目 → 属性 → 切换到Web选项卡
  • 在「服务器」区域选择「本地IIS Web服务器」,点击「创建虚拟目录」
  • 确认「项目URL」对应的物理路径指向你实际的项目目录(D:/Repo/Tests009/...)
  • 保存设置后,重启IIS Express

三、额外注意事项

  • 确保应用程序池对App_Data目录拥有读写权限
  • 避免在文件操作中使用~/App_Data这类虚拟路径,必须使用物理绝对路径
  • 可根据业务需求添加文件名重复处理逻辑(如重命名、覆盖提示等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:01:08