相关疑难解决方法(0)

为什么要使用HTTP POST或DELETE而不是GET删除?

我一直在研究微软的ASP.NET MVC教程,最后到了这个页面

http://www.asp.net/learn/mvc/tutorial-32-cs.aspx

以下声明是针对此页面的底部进行的:

通常,在调用修改Web应用程序状态的操作时,您不希望执行HTTP GET操作.执行删除时,您希望执行HTTP POST,或者更好的是,执行HTTP DELETE操作.

这是真的?任何人都能对这一陈述背后的理由提供更详细的解释吗?

编辑

维基百科声明如下:

某些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全,这意味着它们仅用于信息检索,不应更改服务器的状态.

相比之下,POST,PUT和DELETE等方法适用于可能导致服务器副作用的操作

asp.net-mvc http http-delete

32
推荐指数
5
解决办法
2万
查看次数

与路由不匹配时,OWIN中的WebApi总是返回200而不是404

我有一个相对简单的WebApi网站,其中包含几个控制器,它们在OWIN中以AutoFac作为DI容器运行。

该站点仅使用属性路由进行设置,但即使遇到无效路由也始终返回200 OK响应。我们也有一些过滤器和一个运行的静态文件服务器,但是我已经注释掉了启动文件中的所有代码(所有IAppBuilder调用,甚至是HttpConfiguration的创建),但是我们仍然可以做到这一点。在IIS和IIS Express中都会发生这种情况。

我也曾尝试在其中添加默认路由,但看到的行为相同。

我已经读了一些书,并且了解到我可以在流水线中编写某种钩子,或者编写一个具有捕获所有路由和返回404的动作的控制器,但是感觉好像没有必要。

这是默认行为吗?

我已经看过这个答案了,但我们没有global.asax:ASP.NET Web Api在应返回404时返回200 OK

请参见下面的精简代码,该代码仍能说明问题

启动文件

[assembly: OwinStartup(typeof(Startup))]
namespace Api.blah
{
    using Owin;

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            var container = this.GetAutofacContainer(config);
            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            config.MapHttpAttributeRoutes();

            app.UseWebApi(config);
        }

        private IContainer GetAutofacContainer(HttpConfiguration config)
        {
            ContainerBuilder containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            return containerBuilder.Build();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

HealthController.cs

namespace Api.blah.Controller
{
    [RoutePrefix("api/health")]    
    public class HealthController : ApiController
    {
        public HealthController()
        {

        }

        [HttpGet]
        [Route]
        public …
Run Code Online (Sandbox Code Playgroud)

asp.net routes url-routing owin asp.net-web-api2

5
推荐指数
1
解决办法
499
查看次数