Eu acho que essa é uma questão de SF, em vez de SO, então espero encontrar uma resposta aqui ...
Eu tenho um aplicativo da web .Net 4 implantado no Windows 2008 / IIS7 (servidor dev) e no Windows 2008R2 / IIS7.5 (servidor prod). Este site é executado sem um problema. Recentemente, tivemos que adicionar restrições de IP ao site, que é configurado como "negar tudo, permitir isso". Acessar o site de um IP na lista de permissões é bom, mas a partir de um IP negado, ele termina em uma exceção de aplicativo. Eu esperaria que o resultado do IP negado fosse uma página de erro padrão do IIS para uma resposta 403.6 sem que a solicitação chegasse ao site, mas parece que a solicitação chega ao site. Ambos os servidores têm muitos sites definidos e usam a vinculação baseada em nome de host.
Na caixa dev, aqui está a entrada relevante do arquivo applicationHost.config para o meu teste atual (o arquivo prod tem entradas permitidas em vez desta entrada negada):
<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>
E aqui está a mensagem de erro:
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)
Você pode ver que a solicitação chegou ao site, mas não pelos meios normais, já que a sessão do NHibernate nunca foi criada. O aplicativo não especifica nenhum erro personalizado (a seção de erro personalizada está definida como Desativada). O log de solicitação com falha está vazio.
Se alguém puder apontar o que poderia estar errado, seja com a configuração ou com a minha compreensão de como isso funciona, isso seria muito apreciado!
Obrigado.