Asp.net web api Web API-如何使用Fiddler上载带有请求参数的excel文件

Asp.net web api Web API-如何使用Fiddler上载带有请求参数的excel文件,asp.net-web-api,fiddler,Asp.net Web Api,Fiddler,我正在通过Web Api上传服务器上的excel文件。我需要随文件一起传递一些参数 但是,当我使用fiddler时,我可以获取请求参数或仅获取文件,但我需要在我的WebAPI控制器中同时使用这两种东西 方法类型:Post 网址: 请求头- 用户代理:Fiddler 主机:本地主机 内容长度:74 内容类型:application/json;字符集=utf 请求主体- { “目录代码”:“1”, “行动”:“1”, “实体”:“1”, “上载者”:“1” } 以上是我传递请求参数的正常方式,我试图

我正在通过Web Api上传服务器上的excel文件。我需要随文件一起传递一些参数

但是,当我使用fiddler时,我可以获取请求参数或仅获取文件,但我需要在我的WebAPI控制器中同时使用这两种东西

方法类型:Post 网址:

请求头-

用户代理:Fiddler 主机:本地主机 内容长度:74 内容类型:application/json;字符集=utf

请求主体- { “目录代码”:“1”, “行动”:“1”, “实体”:“1”, “上载者”:“1” }

以上是我传递请求参数的正常方式,我试图在fiddler中从“上传文件”选项和上述请求一起上传excel文件,但当文件上传时,请求头和请求体都发生了变化。 当我运行此命令时,我将无法将请求参数获取到我的web API控制器

我的控制器操作代码-

[HttpPost]
        public async Task<HttpResponseMessage> UploadCatalogExcel(CatalogUploadRequest catalogUploadRequest)
        {
            if (catalogUploadRequest == null)
                return CreateResponse(HttpStatusCode.NotAcceptable, ControllerErrorCodeConstants.RequestIsInvalid, "Invalid request");

            if (!ModelState.IsValid) return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);

            if (!Request.Content.IsMimeMultipartContent())
                return Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, "Uploading file is mandatory");

            try
            {
                //Request to BL Mapping

                var catalogUploadExcelBi = CatalogUploadMapping.UploadCatalogExcelRequestToBiMap(catalogUploadRequest);

                var CatalogInfo = _catalogUploadBi.GetSampleCatalogExcel(catalogUploadExcelBi.CatalogCode);

                string uploadPath = HttpContext.Current.Server.MapPath("~/App_Data");
                uploadPath = uploadPath + "\\Upload\\" + CatalogInfo.SellerAccountId + "_" + CatalogInfo.SellerAccountName + "\\" + DateTime.Now.Year.ToString() + "_" + CatalogInfo.CatalogCode; // Physical File Location

                string currentTime = Regex.Replace(DateTime.Now.ToString(), "[^0-9]+", "");
                string name = catalogUploadExcelBi.CatalogCode + "_" + currentTime + ".xlsx"; // File Name                              

                catalogUploadExcelBi.FileName = "aa";
                catalogUploadExcelBi.FilePath = uploadPath;                            

                bool exists = System.IO.Directory.Exists(uploadPath);
                if (!exists)
                    System.IO.Directory.CreateDirectory(uploadPath);

                MyStreamProvider streamProvider = new MyStreamProvider(uploadPath);
                await Request.Content.ReadAsMultipartAsync(streamProvider);   

                var response = _catalogUploadBi.LogUploadCatalogExcel(catalogUploadExcelBi);

                if (response.ServerErrors != null && response.ServerErrors.Count != 0)
                {
                    response.ServerErrors = response.ServerErrors;
                    return Request.CreateResponse(HttpStatusCode.BadRequest, response.ServerErrors);
                }
                return Request.CreateResponse(HttpStatusCode.OK, "File uploaded successfully");
            }
            catch (Exception ex)
            {
                var error = _errorManager.GetCustomeError(ex.GetType().ToString());

                return error != null && !string.IsNullOrWhiteSpace(error.ErrorCode) && !string.IsNullOrWhiteSpace(error.ErrorMessage)
                    ? Request.CreateResponse(string.Format("Exception Occured! Error code : {0}  Error Message :   {1}", error.ErrorCode,
                        error.ErrorMessage)) : Request.CreateResponse(string.Format("Upload file method Exception Occured!"));
            }           
        }
[HttpPost]
公共异步任务上载CatalogExcel(CatalogPloadRequest CatalogPloadRequest)
{
if(目录查询==null)
返回CreateResponse(HttpStatusCode.NotAcceptable,ControllerErrorCodeConstants.RequestIsInvalid,“无效请求”);
如果(!ModelState.IsValid)返回Request.CreateErrorResponse(HttpStatusCode.BadRequest,ModelState);
如果(!Request.Content.IsMimeMultipartContent())
return Request.CreateResponse(HttpStatusCode.UnsupportedMediaType,“必须上传文件”);
尝试
{
//请求BL映射
var CatalogPloadeXcelbi=CatalogPloadMapping.UploadCatalogExcelRequestToBiMap(CatalogPloadRequest);
var CatalogInfo=_catalogPloadbi.GetSampleCatalogExcel(catalogPloadexcelbi.CatalogCode);
字符串uploadPath=HttpContext.Current.Server.MapPath(“~/App_Data”);
uploadPath=uploadPath+“\\Upload\\”+CatalogInfo.SellerAccountId+“\\”+CatalogInfo.SellerAccountName+“\\”+DateTime.Now.Year.ToString()+“\\”+CatalogInfo.CatalogCode;//物理文件位置
字符串currentTime=Regex.Replace(DateTime.Now.ToString(),“[^0-9]+”,“);
string name=catalopploadexcelbi.CatalogCode+“”+currentTime+”.xlsx”;//文件名
目录ploadexcelbi.FileName=“aa”;
catalogploadexcelbi.FilePath=上传路径;
bool exists=System.IO.Directory.exists(上传路径);
如果(!存在)
System.IO.Directory.CreateDirectory(上传路径);
MyStreamProvider streamProvider=新的MyStreamProvider(上传路径);
wait Request.Content.ReadAsMultipartAsync(streamProvider);
var响应=_catalogploadbi.LogUploadCatalogExcel(catalogploadexcelbi);
if(response.ServerErrors!=null&&response.ServerErrors.Count!=0)
{
response.ServerErrors=response.ServerErrors;
return Request.CreateResponse(HttpStatusCode.BadRequest,response.ServerErrors);
}
return Request.CreateResponse(HttpStatusCode.OK,“文件上传成功”);
}
捕获(例外情况除外)
{
var error=_errorManager.GetCustomeError(例如GetType().ToString());
返回错误!=null&&!string.IsNullOrWhiteSpace(error.ErrorCode)&&!string.IsNullOrWhiteSpace(error.ErrorMessage)
?Request.CreateResponse(string.Format(“发生异常!错误代码:{0}错误消息:{1}”),Error.ErrorCode,
error.ErrorMessage)):Request.CreateResponse(string.Format(“发生上载文件方法异常!”);
}           
}

你能发布你的控制器签名吗?上传时参数/主体是什么?有人知道这个问题的解决方案吗。。。提前谢谢。