我有一个运行在.net framework 4.0版本上的aspx.net网站,网站使用表单身份validation,除了系统的一小部分,其中保存了networking服务,已被configuration为可以被所有人访问(使用web.config文件中的位置设置)。
该应用程序安装在Windows 2008服务器IIS7.5上,配有自己的内存池,为.NET 4.0configuration。 还有一个DefaultAppPool也configuration好了,我原来是为.NET 2.0configuration的。
我正在调查运行其中一个我的Web服务的问题,其中一个函数被调用时返回错误404,我解决了这个问题,但是我注意到,每当我收到错误,返回错误的.NET版本是版本2.0 ,而不是版本4.0,它应该运行在应用程序池中。我通过将DefaultAppPool的设置更改为4.0来确认此行为,然后错误由适当的版本生成。
IIS似乎已经决定了应该使用哪个内存池,绕过了我为aspx.net网站configuration的内容。
有任何其他人遇到类似的问题,我会发疯,是否有一个configuration选项隐藏在某个地方,可以certificate这种行为? (即在machine.config中的某个地方)
只是在出现错误的时候,这是404; 这表明生成错误的请求不是由您的应用程序池提供的名称空间的一部分。 因为404没有find,这意味着URL不正确; 心理debugging告诉我们,这不属于你的应用程序/path/。
如果默认网站在根目录下以DefaultAppPool的forms运行,则任何出现在您的特定应用程序path之外(在Your40AppPool中运行)的错误请求将由DefaultAppPool提供服务。
Netsh http sh ser
会显示为每个应用程序池定义的URL命名空间(只是盯着它一会儿,直到你得到它的挂起)。 如果有任何请求的目标位于/ path /映射到Your40AppPool之外的任何目标,它将由在站点(或框)级别注册的任何东西提供服务,这些大多数情况下都是DefAppPool。