为了账号安全,请及时绑定邮箱和手机立即绑定

IsMimeMultipartContent无法处理Multipart Content-Type

IsMimeMultipartContent无法处理Multipart Content-Type

C#
尚方宝剑之说 2021-04-10 14:10:42
我有一个Microsoft ASP.net Web API项目(使用.net Framework 4.61),该项目具有API方法,这些方法应该接受POST请求,其中Post包含MIME多部分消息。.net Framework具有这些方法,HttpContentMultipartExtensions.IsMimeMultipartContent并且HttpContentMultipartExtensions.ReadAsMultipartAsync能够自动处理MIME多部分消息。在WebAPI控制器中使用以下示例代码:public class MySampleController : ApiController{    public IHttpActionResult Post()    {        if(this.Request.Content.IsMimeMultipartContent())        {            return Json("OK");        }        else        {            throw new Exception("No Multipart");        }    }}对于Post请求中给定的Content-Type标头,这将产生以下结果:multipart/related;type=application/dicom+xml;boundary=MESSAGEBOUNDARY ->触发异常multipart/related;type="application/dicom+xml";boundary=MESSAGEBOUNDARY ->输出确定multipart/related;type=application-dicom+xml;boundary=MESSAGEBOUNDARY ->输出确定似乎.net中的Multi Part处理无法处理typeContent-Type标头的参数中出现的斜线,除非该值嵌入在双引号中,尽管据我所知,RFC使用双引号在这种情况下是可选的。WebAPI项目或IIS中是否有一些设置可以解决此问题?有没有一种方法可以通过代码解决此问题?还是行为标准符合要求并且双引号是必需的?作为参考,这是一些简单的代码,您可以从另一个应用程序使用该代码来发送发布请求:private void buttonSend_Click(object sender, EventArgs e){    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(@"http://localhost/projectname/api/mysample");    myRequest.Method = "POST";    // Server call fails when the double quotes around the type value are removed    myRequest.ContentType = "multipart/related;type=\"application/dicom+xml\";boundary=MESSAGEBOUNDARY";     string body = @"--MESSAGEBOUNDARYContent-Type: application/dicom+xml<?xml version=""1.0"" encoding=""UTF-8""?><NativeDicomModel></NativeDicomModel>--MESSAGEBOUNDARY--";    var data = Encoding.Default.GetBytes(body);    myRequest.ContentLength = data.Length;    Stream newStream = myRequest.GetRequestStream();    newStream.Write(data, 0, data.Length);    var lResponse = myRequest.GetResponse();    MessageBox.Show("OK");}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信