Dav*_*cia 10 c# http-post http-status-code-302 asp.net-mvc-4
我看了一遍,找不到答案.我在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);
}
}
Run Code Online (Sandbox Code Playgroud)
索引视图只有一个表单和一个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
Run Code Online (Sandbox Code Playgroud)
怎么可能发生这种情况?有什么想法解决这个问题?
我所知道的环境之间的唯一区别是我安装了.NET 4.5并且安装了.NET 4.0(并且由于某种原因不会安装4.5.)这些项目目标是.NET 4,所以不要认为这很重要吗?最初我让他们的目标是4.5,但在我得知它没有安装在服务器上后改变了它.
搜索返回302的ASP.NET POST会引发很多关于由于登录而导致重定向的问题.但是此控制器不受任何类型的受限文件夹或[Authorize]
属性限制.
无论有没有尝试过<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>
Run Code Online (Sandbox Code Playgroud)
经过多次反复之后,托管服务提供商让我注意到他们不支持 ASP.NET MVC 4,最多只有 3 个。我不确定他们如何或为什么不支持较新版本,但是似乎是问题的根源。
不用说,我搬到了支持最新框架的主机上。现在该网站运行完美。
归档时间: |
|
查看次数: |
10598 次 |
最近记录: |