【问题标题】:Html.BeginForm does not postHtml.BeginForm 不发布
【发布时间】:2019-08-30 20:45:41
【问题描述】:

我正在使用未经修改的 AspNet Identity 2。当我部署到 WinHost 时,登录、注册、更改密码等视图无法发布。当我部署到我的测试服务器时,一切正常。如果我删除所有 HTML.BeginForm 参数,我可以使生产应用程序工作。

这不起作用: @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class= "form-horizo​​ntal", role = "form" }))

这有效: @using (Html.BeginForm())

我尝试了各种 beginform 重载,但均未成功。我的应用程序是带有实体框架 4.6.1 的 MVC 5.2.7。我正在使用 VS 2017 v 15.5.7

【问题讨论】:

  • 进一步测试我发现这行得通:@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) 有人能帮我理解为什么 HTML.BeginForm 在我的 WinHost 生产应用程序和我的测试服务器应用?

标签: post html.beginform


【解决方案1】:

我发现了问题。我在 IIS 中有一个 URL 重写规则,如果 URL 包含大写字符,则会导致 301 重写。 301 重定向导致 HTTP POST 变为 GET。禁用规则解决了问题。 https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect/99966#99966 说你可以做一个 307 重定向。我将规则更改为执行 307,但 POST 仍被重定向到 GET。我禁用了规则。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2015-03-11
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多