У меня тоже возникла эта проблема, и действительно, удаление IIS7 URL Rewrite Module помогло бы ее исправить.Проблема в том, что у нас всегда был установлен модуль Rewrite на всех наших серверах, что заставляло меня немного нервничать.Так что я заглянул в это немного больше, чтобы увидеть, что я изменил, чтобы вызвать это, и оказалось, что это я.Фактически, я делал это несколько раз раньше и, похоже, не учусь, потому что это легко сделать.
Мой класс воспринял UrlHelper как зависимость через конструктор, такой как
public class MyClass : IMyInterface
{
private readonly UrlHelper _url;
public MyClass(UrlHelper url)
{
_url = url;
}
public RedirectResult RedirectMeSomewhere()
{
return new RedirectResult(_url.Action("MyAction", "MyController"));
}
}
и моя привязка Ninject выглядела следующим образом:
Bind<IMyInterface>()
.To<MyClass>()
.InSingletonScope();
, где, как это и должно было выглядеть, она обслуживает правильный UrlHelper для запроса вместо уже расположенного, созданного какСинглтон, когда сайт впервые появился.
Bind<IMyInterface>()
.To<MyClass>()
.InRepositoryScope();
Требуется некоторое время, чтобы заметить эти вещи, мне нужно придумать тест, чтобы убедиться, что UrlHelper не обслуживается в синглтоне.
tl: dr
Привязка My Ninject для класса, который принял UrlHelper в качестве зависимости через своего конструктора, была установлена на SingletonScope()
вместо RequestScope()
, то естьочень плохо по понятным причинам ..
В любом случае, надеюсь, что это поможет кому-то (или мне в будущем).