【发布时间】:2013-12-19 00:58:43
【问题描述】:
我已经翻遍了,找不到答案。我在 ASP.NET MVC4 中有一个简单的测试控制器,设置如下:
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 视图只有一个表单和一个 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 会引发很多关于由于登录而重定向的问题。但此控制器不在任何类型的受限文件夹或[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>
【问题讨论】:
-
您可以在托管服务提供商的服务器上启用任何跟踪吗?
-
很遗憾,不,我无法启用跟踪。我确实提交了一份支持票,建议他们也这样做来帮助调试问题。那是 8 小时前的事了,希望很快能收到回复...
-
提供程序设置上的框是否可能将 HTTP 重定向到 HTTPS?
-
此托管计划不包括 HTTPS。
-
你能分享一个提琴手的踪迹吗?
标签: c# asp.net-mvc-4 http-post http-status-code-302