gpt4 book ai didi

c# - ASP.NET MVC POST 错误地返回 HTTP 302

转载 作者:可可西里 更新时间:2023-11-01 09:13:01 24 4
gpt4 key购买 nike

我找遍了,找不到这个问题的答案。我在 ASP.NET MVC4 中有一个简单的测试 Controller ,设置如下:

public class TestController {
[HttpGet]
public ActionResult Index() {
MyModel model = new MyModel();
model.Debug += "GET Method";
return View(model);
}

[HttpPost]
public ActionResult Post(MyModel model) {
model.Debug += "POST Method";
return View("Index", model);
}
}

Index View 只有一个表单和一个 POST 到/Test/Post 的按钮,它应该只返回带有 Index 的 HTTP 200。看法。 这在我的笔记本电脑和我的服务器上按预期工作。但是在托管服务提供商上,我在执行 POST 时得到以下信息:

POST /Test/Post returns HTTP 302 Redirect to /Test/Post (What the heck?)
GET /Test/Post returns HTTP 404

这怎么可能发生?有解决此问题的想法吗?

我所知道的环境之间的唯一区别是我安装了 .NET 4.5 而他们安装了 .NET 4.0(并且出于某种原因不会安装 4.5。)尽管这些项目以 .NET 4 为目标,所以不要不觉得这有关系吗?最初我让他们以 4.5 为目标,但在得知它未安装在服务器上后更改了它。

搜索返回 302 的 ASP.NET POST 会提出很多关于因登录而重定向的问题。但此 Controller 不在任何类型的受限文件夹或 [Authorize] 下属性。


更新 - web.config 的

我已经尝试过使用和不使用 <authorization> ,无论哪种方式,结果都是一样的。这是 system.web,如果这会有所帮助:

  <system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="30"/>
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="Database" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
</providers>
</membership>
<pages controlRenderingCompatibilityVersion="4.0">
<namespaces>
<add namespace="System.Web.Helpers"/>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="Microsoft.Web.Mvc"/>
<add namespace="Tenido.Domain"/>
<add namespace="Tenido.Web.Mvc.Controllers"/>
</namespaces>
</pages>
<httpModules>
<add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</httpModules>
</system.web>

最佳答案

经过多次来回,托管服务提供商提醒我他们不支持 ASP.NET MVC 4,最多只支持 3 个。我不确定他们如何或为什么不支持较新的版本,但这似乎是问题的根源。

不用说,我搬到了支持最新框架的主机上。现在网站运行良好。

关于c# - ASP.NET MVC POST 错误地返回 HTTP 302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com