批处理请求必须具有“Content-Type”标头/“multipart/mixed”作为媒体类型

Posted

技术标签:

【中文标题】批处理请求必须具有“Content-Type”标头/“multipart/mixed”作为媒体类型【英文标题】:The batch request must have a "Content-Type" header / "multipart/mixed" as the media type 【发布时间】:2019-07-13 01:29:57 【问题描述】:

在我的 WEB API OData v4 上添加 DefaultODataBatchHandler 后出现错误。

DefaultODataBatchHandler defaultODataBatchHandler = new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer); 

在浏览器中出现此错误:批处理请求必须具有“Content-Type”标头。 在 POSTMan 中,我遇到了这个错误:批处理请求必须将“multipart/mixed”作为媒体类型。

如果我没有把代码放在上面。访问 $batch

时出现此错误
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:2288/$batch'.",
"MessageDetail": "No route providing a controller name was found to match request URI 'http://localhost:2288/$batch'"

RouteConfig.cs

public class RouteConfig

    public static void RegisterRoutes(RouteCollection routes)
    

        routes.IgnoreRoute("resource.axd/*pathInfo");

        routes.MapRoute(
            name: "Default",
            url: "controller/action/id",
            defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional 
        );
    

【问题讨论】:

您是否将路由添加到 RoutesConfig 中? 我更新了我的帖子并包含了 routeconfig。 【参考方案1】:

现在明白了。

我只需要添加 CORS

        var cors = new EnableCorsAttribute(
            "*",
            "*",
            "*",
            "*"
        );

        config.EnableCors(cors);

并为暴露的标头添加通配符。

【讨论】:

以上是关于批处理请求必须具有“Content-Type”标头/“multipart/mixed”作为媒体类型的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 动态 api 页面无法响应带有 Content-Type=application/json 标头的 post 请求

如何为 HttpClient 请求设置 Content-Type 标头?

带有自定义标头的 C# HttpClient POST 请求发送不正确的 Content-Type 标头字段

Jersey 客户端错误 - 无法解析无效的 Content-Type 标头(需要解决方法)

在 Spring Reactive 中使用 application.properties 在请求标头中设置 Content-type

Access-Control-Allow-Headers 在飞行响应中不允许请求标头字段 Content-Type