Я просмотрел все и не могу найти ответ на этот вопрос. У меня есть простой тестовый контроллер в 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 с представлением Index
. Это работает как на моем ноутбуке, так и на моем сервере. Но на хостинг-провайдере я получаю следующее, когда я выполняю 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, но изменили его после того, как я узнал, что он не установлен на сервере.
Поиск POST-запросов ASP.NET, возвращающих 302, вызывает много вопросов о перенаправлении из-за входа в систему. Но этот контроллер не находится под какой-либо ограниченной папкой или атрибутом [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>