C# Web API POST数据错误HTTP error 405.0-不允许使用方法

C# Web API POST数据错误HTTP error 405.0-不允许使用方法,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,我正在编写一个Web API来接收遥测数据。应将十六进制字符串形式的遥测数据发布到web API URL。此Web API不需要身份验证、RoutePrefix和路由。内容类型:文本/纯文本 这是我的代码 [Route("")] [EnableCors(origins: "*", headers: "*", methods: "*")] public class MyData_Controller : ApiController { [HttpPost] [ActionName(

我正在编写一个Web API来接收遥测数据。应将十六进制字符串形式的遥测数据发布到web API URL。此Web API不需要身份验证、RoutePrefix和路由。内容类型:文本/纯文本

这是我的代码

[Route("")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class MyData_Controller : ApiController
{
    [HttpPost]
    [ActionName("DefaultAction")]
    public Task<IHttpActionResult> DataPost(String myData)
    {
        SaveData(myData);
        return Task.FromResult<IHttpActionResult>(Json(true));
    }

    protected void SaveData(String myData)
    {
    }
}
邮差标题显示

允许→ 获取、头部、选项、跟踪
这是否意味着动词POST或PUT未启用

我选中了StaticFile处理程序,它是在处理程序映射和请求的限制->动词选择了所有动词中配置的


我的实现和站点配置有什么问题?

我纠正了这个问题,这可能不是完美的方法。把我的解决方案放在这里,以防有人或多或少受益

如果我将authentication属性放在处理程序上,并且放在authentication类中,总是返回true(给出一个假的authentication success),那么API可以正常工作,而不会出现405错误。我觉得这不是正确的方法,但真的没有时间进一步研究


另一个问题是定义路线。如果未提供路由,则将此控制器设置为路由配置部分中的默认控制器。

我解决了这个问题,这可能不是完美的方法。把我的解决方案放在这里,以防有人或多或少受益

如果我将authentication属性放在处理程序上,并且放在authentication类中,总是返回true(给出一个假的authentication success),那么API可以正常工作,而不会出现405错误。我觉得这不是正确的方法,但真的没有时间进一步研究


另一个问题是定义路线。如果未提供路由,则将此控制器设置为路由配置部分中的默认控制器。

您可以在控制器或操作上使用
[AllowAnonymous]
来避免伪造身份验证

您可以将
[Route]
设置为根目录,因为您正在使用属性路由,这在为API设计URI时为您提供了更多的控制和更大的灵活性

鉴于它是一个web API,您可以简单地使用HTTP状态代码来提供请求的反馈

如果遥测数据仅通过请求主体发送,则应使用
[FromBody]
参数绑定属性对其进行限制

[路由(“/”,Name=“DefaultTelemetry”)]
[使能CORS(来源:“*”,标题:“*”,方法:“*”)
公共类MyData\u控制器:ApiController{
[HttpPost]
[异名]
[ActionName(“DefaultAction”)]

[Route(“”)///Matches POST/您可以在控制器或操作上使用
[AllowAnonymous]
来避免伪造身份验证

您可以将
[Route]
设置为根目录,因为您正在使用属性路由,这在为API设计URI时为您提供了更多的控制和更大的灵活性

鉴于它是一个web API,您可以简单地使用HTTP状态代码来提供请求的反馈

如果遥测数据仅通过请求主体发送,则应使用
[FromBody]
参数绑定属性对其进行限制

[路由(“/”,Name=“DefaultTelemetry”)]
[使能CORS(来源:“*”,标题:“*”,方法:“*”)
公共类MyData\u控制器:ApiController{
[HttpPost]
[异名]
[ActionName(“DefaultAction”)]

[Route(“”)///Matches POST/您可以在控制器或操作上使用
[AllowAnonymous]
来避免伪造身份验证。您可以在控制器或操作上使用
[AllowAnonymous]
来避免伪造身份验证。