【问题标题】:$.post being turned into GET$.post 变成了 GET
【发布时间】:2012-07-16 14:23:31
【问题描述】:

我的 jQuery $.post 调用在我的环境中工作正常。但在生产中,$.posts 神秘地变成了 GET,返回 404。

开发调用: $.post('/Home/Destaques') (通话正常)

生产调用: $.post('/Home/Destaques') 产生 GET /Home/Destaques/ 404(未找到)

响应头之间有区别,即:

开发: 服务器:Microsoft-IIS/7.0 X-AspNet-版本:4.0.30319 X-AspNetMvc-版本:2.0

生产: 服务器:Microsoft-IIS/6.0 X-AspNet-版本:2.0.50727 (没有 AspNetMvc 标头)

为什么 POST 会变成 GET?

【问题讨论】:

  • 我认为是因为相对url的变化。
  • 如果不理解为 false,则使用 Action 属性。对于 Destaques 是行动,使用 [HttpPost]
  • @jSang 我认为相对 url 是一样的:/Home/Destaques?
  • @BeratBilgin 已经在使用了。
  • 您是否检查过服务器上安装了正确版本的 asp.net mvc 并且 iis 虚拟目录/站点正在运行正确版本的 .net?

标签: jquery asp.net-mvc post get request


【解决方案1】:

在指定位置时使用@Url.Action。这是发生问题的最佳示例,Url.Action 的主要原因是在 MVC 中引入的。

编辑-

Dude 看看会发生什么,我们将 Url.Action 或 Url.Content 用于相同的目的,因为它的部署方式可能不在根目录本身。

类比可以映射到 - 当你在到达目的地的方式之间迷路时,你问某人到目的地的路,他回答{Right-Right-left-Right},你就在那里.但是,如果您不在同一点上并遵循这种方式,这可能行不通。

所以对于服务器来说也是如此。当它在子站点上时,它无法找到出路,因为深度级别不同,并且当您更改它时它开始工作。所以,AFAIK就是这种情况。

阅读 Url.Action 文档。举个例子:Scott Guthrie's( MVC GURU) blog

【讨论】:

  • +1 会建议(并且在许多情况下)正是这种补救措施
  • 我认为在这种情况下位置还可以:/Home/Destaques 在两个环境中都存在。
  • @PedroSobota - 仅此操作会发生这种情况还是其他操作会得到解决?部署时是否添加了处理 MVC 路由的处理程序?由于您的 Local 是 IIS/7.0 而 Production 是 - IIS 6.0 。在 IIS 6 上部署时需要进行一些修改,它本身不支持 URL 路由。将为此添加一个处理程序。
  • @bhuvin 托管服务器理论上已准备好为 MVC 2 提供服务,所以他们说。路由有效,因为我可以浏览该站点。只有 ajax POST 不起作用(全部)。它们变成了 GET。
  • @PedroSobota - 查看响应,它说 Asp.NET 2.0 已映射。我想检查blog.stevensanderson.com/2008/07/04/… out 。我已经用这种方式将它部署在我的服务器上。但是你的问题似乎很奇怪。我让我的前辈来看看你的问题。让我看看他们是怎么想的?
猜你喜欢
  • 2017-06-05
  • 1970-01-01
  • 2012-05-29
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 2022-11-07
  • 2014-05-12
相关资源
最近更新 更多