C# ASP.NET MVC POST错误返回HTTP 302

C# ASP.NET MVC POST错误返回HTTP 302,c#,asp.net-mvc-4,http-post,http-status-code-302,C#,Asp.net Mvc 4,Http Post,Http Status Code 302,我找遍了,找不到答案。我在ASP.NET MVC4中有一个简单的测试控制器,设置如下: public class TestController { [HttpGet] public ActionResult Index() { MyModel model = new MyModel(); model.Debug += "GET Method"; return View(model); } [HttpPost]

我找遍了,找不到答案。我在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视图只有一个表单和一个按钮,用于发布到/Test/Post,该按钮应该只返回带有
索引的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帖子会带来很多关于因登录而重定向的问题。但此控制器不在任何类型的受限文件夹或
[Authorize]
属性下


更新-web.config的 我试过使用和不使用
,结果都一样。以下是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>

在控制器方法中使用AllowAnonymous属性

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

希望能有帮助

我也有同样的问题

帮助我的是从web.config中删除
标记


不需要使用
[Authorize]
属性,并将302代码更改为404代码。

经过多次往返之后,托管提供商提醒我,他们不支持ASP.NET MVC 4,最多只支持3个。我不知道他们是如何或者为什么不支持新版本的,但这似乎是问题的根源


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

我也有类似的问题。从web.config中删除授权标记后,它对我起了作用。不确定原因。

对我来说,我们通过web.config为自定义错误配置了错误重定向

<system.web> 
...  

 <customErrors mode="On" defaultRedirect="~/error/errorpage">
...

</customErrors>

...  
...

它在内部错误后执行302。设置customErrors mode=“Off”会将错误一直冒泡到浏览器。

如果使用基于cookie的身份验证,请确保为
.AspNet.applicationcokie
(或任何名称)返回的cookie与您所在站点的域相匹配


有时发生在我身上的事情是cookie域对于我所在的站点不正确(由于我的多主机环境老化),然后尽管发布了一个新的auth cookie,浏览器在重定向期间无法将其发送回(因为它是另一个域)因此,它会重定向回身份验证页面。

您能在托管提供商服务器上启用任何跟踪吗?很遗憾,我不能启用跟踪。我确实提交了一份支持票,建议他们也这样做来帮助调试问题。那是8小时前的事了,希望很快能听到回音…提供商设置的框是否可以将HTTP重定向到HTTPS?此托管计划不包括HTTPS。您可以共享fiddler跟踪吗?尝试从web.config中删除,但仍然产生相同的结果。感谢您的想法,但仍然产生相同的结果。