Я думаю, что это вопрос SF, а не SO, так что, надеюсь, я найду здесь ответ ...
У меня есть веб-приложение .Net 4, развернутое как для Windows 2008 / IIS7 (сервер разработки), так и для Windows 2008R2 / IIS7.5 (сервер prod). Этот сайт работает без проблем. Недавно нам пришлось добавить ограничения IP-адресов для сайта, который настроен как «запретить все, разрешить». Доступ к сайту с IP-адреса из белого списка разрешен, но с запрещенного IP-адреса это заканчивается исключением приложения. Я бы ожидал, что результатом отклоненного IP-адреса будет стандартная страница ошибок IIS для ответа 403.6 без того, чтобы запрос когда-либо прибыл на сайт, но похоже, что запрос ДОХОДИТ на сайт. Оба сервера имеют много сайтов и используют привязку на основе имени хоста.
Из окна разработчика вот соответствующая запись из файла applicationHost.config для моего текущего теста (файл prod имеет разрешающие записи вместо этой запрещающей записи):
<location path="OurSite.Web">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
</authentication>
<ipSecurity allowUnlisted="false">
<add ipAddress="10.1.3.193" allowed="false" />
</ipSecurity>
</security>
</system.webServer>
</location>
И вот сообщение об ошибке:
2013-08-26 10:55:07,229 FATAL OurSite.Web (null) [12] System.Web.HttpApplication.RaiseOnError(:0) - An unhandled 'NotSupportedException' exception occurred within the application.
System.NotSupportedException: There is no session associated with this context. You should ensure that one has been started by specifying the correct domain alias
at OurSite.Data.Dao.Session.NHibernateSessionManager.CommitTransaction()
at OurSite.Web.HttpModule.AbstractNHibernateSessionModule.CommitAndCloseSession(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Вы можете видеть, что запрос был доставлен на сайт, но не обычным способом, поскольку сеанс NHibernate никогда не создавался. Приложение не указывает никаких пользовательских ошибок (для раздела пользовательских ошибок установлено значение «Выкл.»). Журнал неудачных запросов пуст.
Если кто-то может указать, что может быть не так, будь то установка или мое понимание того, как это работает, это было бы очень признательно!
Спасибо.