【问题标题】:asp.net web api 405 method not allowed, post, custom actionasp.net web api 405 方法不允许,发布,自定义操作
【发布时间】:2015-01-13 12:53:07
【问题描述】:

我已经看到很多关于同一问题的问题,但我真的无法弄清楚我做错了什么。 当我向 InscricaoSecretaria/Salvar 方法发送请求时收到 405 错误。

这是我的配置文件:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MessageHandlers.Add(new AuthorizationHandler());

        // Default Route Configuration

        config.Routes.MapHttpRoute(
            name: "DefaultApi2",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // Unity Container Configuration

        IUnityContainer container = new UnityContainer();
        container.RegisterType<BusinessContext>(new InjectionConstructor(ConfigurationManager.ConnectionStrings["HabileConnection"].ConnectionString));
        config.DependencyResolver = new UnityResolver(container);
    }
}

这是我的控制器

public class InscricaoSecretariaController : ApiController
{
    [HttpPost]
    public HttpResponseMessage Salvar(InscricaoSecretaria inscricao)
    {
        return null;
    }
}

和 ajax 调用 (angularjs)。我正在使用角度模块的名为“salvar”的方法,该方法通过单击按钮触发。

"use strict";

(function(){
    var restClient = angular.module("restClient", ["ngResource"]);
    var serviceURL = "/habileapp/api/";

    restClient.factory("InscricaoResource", ["$resource", function ($resource) {
        return $resource(serviceURL + "InscricaoSecretaria", null, {
            "recuperar": {
                "method": "get"
            },
            "salvar": {
                "method": "post",
                "url": serviceURL + "inscricaoSecretaria/Salvar"
            },
            "finalizar": {
                "method": "post",
                "url": serviceURL + "inscricaoSecretaria/Finalizar"
            }
        });
    }]);
})();

服务器响应此错误消息:

The requested resource does not support http method 'POST'.

编辑: 以下是一些请求标头:

Request URL:http://localhost/habileapp/api/inscricaoSecretaria/Salvar
Request Method:POST
Status Code:405 Method Not Allowed

【问题讨论】:

  • 你能发布错误信息吗?
  • 你发帖的方法是什么?您应该看一下 http 标头,有一些东西弄乱了请求的 URI。
  • @WhyCry 我已经更新了描述
  • @Fals 我正在使用帖子 :(
  • 您发布任何数据吗?如果是,请提供样本数据。还要确保 AuhtenticationHanlder 没有造成这个问题。

标签: javascript c# asp.net angularjs asp.net-web-api


【解决方案1】:

您确定您的网络服务器设置已配置为处理 POST 动词吗?默认情况下,它应该为 GET 和 POST 请求设置,但它可能在某些时候已更改。以下是一些检查步骤:

IIS: http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications

IIS 快递: 查看 %userprofile%\documents\IISExpress\config 文件夹中的 applicationHost.config 文件。检查 ExtensionlessUrl-Integrated-4.0 处理程序是否配置了类似这样的 verb="GET,HEAD,POST,DEBUG,PUT,DELETE

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 2018-05-27
    • 2021-02-14
    • 2019-07-04
    • 2013-03-21
    • 1970-01-01
    • 2013-12-25
    • 2021-09-30
    相关资源
    最近更新 更多