这是一个真正的挑战:我已经在我的计算机上设置IIS7.5并开始开发一个网站.每天晚上我都会在我的网络服务器上备份它,赢取2008r2 sp1(所有更新).它完美无瑕.
然而,在跨应用程序池共享cookie时遇到了一个巨大的问题.www.example.com设置为127.0.0.1所以我可以在本地测试网站.它创建了Cookie但是当我删除HOSTS记录(指向Web服务器)时 - Web服务器上的应用程序池崩溃了.它每次都会发生,并且可能必须对sessionID cookie执行某些操作,因为没有cookie它会崩溃!
日志文件是:
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: nlssorting.dll, version: 4.0.30319.239, time stamp: 0x4e182039
Exception code: 0xc00000fd
Fault offset: 0x0000000000001d7d
Faulting process id: 0x9f8
Faulting application start time: 0x01ccbbd76b7a443c
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\nlssorting.dll
Report Id: a9cfd0cf-27ca-11e1-bced-00215e5304da
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
有很多关于该主题的主题说您无法将传入请求重写到 IIS 7 中的不同应用程序池(其中一篇文章是https://serverfault.com/questions/220007/iis-7-5-multiple- application-pools-and-url-rewriting-403-18-forbidden)。重定向可以工作,但该项目的要求是我们不能允许用户查看或搜索引擎对重定向的 URL 建立索引。
所以问题是:本地服务器上是否有任何其他机制允许您在 IIS 有机会开始处理请求之前拦截请求?有点像旧的 ISAPI 过滤器的用途。许多文章建议使用某种形式的 Http 代理或软件负载均衡器;这两个选项都是有效的,但可能会导致物理和虚拟资源的一些开销。回顾一下,主要目标是我们尝试将来自 www.domain.com/(.*) 的请求重写为 www.domain.com/{currentversion}/{R:1},其中根 Web站点和版本化 Web 应用程序彼此隔离。
问题:创建新的IIS应用程序池并将其设置为使用应用程序池标识获取权限时,我不确定如何将这些标识添加到用户组(如管理员或性能计数器用户).
背景:我目前正在编写一个C#.NET库,它使用Microsoft.Web.Administration来执行以下操作:
上下文是可执行安装程序将此库用于在Windows Server操作系统上自动部署Web服务器和Web站点/服务,作为更大的软件部署的一部分.到目前为止,除了需要在应用程序池/网站创建上执行的某些权限的自动化之外,所有上述内容都已实现,测试并且(大部分)功能正常.
在我安装新网站的方法中,我创建了一个新的应用程序池并强制它使用应用程序池标识:
static public void InstallSite(string name, string path, int port)
{
Site site;
var appPoolName = ApplicationPoolBaseName + name;
using (var iisManager = new ServerManager())
{
// Set up a custom application pool for any site we run.
if (!iisManager.ApplicationPools.Any(pool => pool.Name.Equals(appPoolName)))
{
iisManager.ApplicationPools.Add(appPoolName);
iisManager.ApplicationPools[appPoolName].ManagedRuntimeVersion = "v4.0";
}
iisManager.CommitChanges();
}
// ... other code here ('site' gets initialized) ...
using (var iisManager = new ServerManager())
{
// Set …Run Code Online (Sandbox Code Playgroud) c# permissions application-pool iis-7.5 applicationpoolidentity
我们大约每月一次遇到此问题.很难确定原因,所以任何帮助将不胜感激.这会导致应用程序池停止并使网站关闭.我们已经浏览了所有日志文件并且没有任何结论.我们在IIS 6上使用2.0.3版本.
当我在IIS 6中为我的Web应用程序设置应用程序池时,它默认工作进程在1740分钟(29小时)内回收.
即使网站上有活动,或者只有29小时不活动,这种回收是否会发生?
只是考虑正常运行时间.谢谢.
asp.net web-config appdomain application-pool application-restart
我正在编写一个监视应用程序池的.NET服务.根据具体的触发器,我正在重新启动它们.但是,如果触发器在最后一次被回收之前发生,我不想重新启动它们.我如何知道应用程序池的"上次回收时间"?
我有一个应用程序池,每分钟都在回收.私有内存设置为1433600KB虚拟内存设置为2457600KB(是的很多).回收常规时间间隔保留为其默认值1740.从我可以看到,当回收发生时,内存限制没有达到.我找不到任何可能导致此问题的服务器上的任何内容.
有没有人对这可能是什么原因有任何想法?
我正在开发中运行ASP.NET 3.5 Web应用程序。开发意味着我需要相当频繁地修改App_Code。当我将更新的.cs文件上传到App_Code时,在下一页加载时,出现以下错误:
The assembly 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
Files\root\a18f28ce\a6daf424\App_Code.dll' is already loaded in another appdomain.
Setting <deployment retail="true" /> in machine.config can help solve this issue.
Run Code Online (Sandbox Code Playgroud)
在停止并启动应用程序池之前,不会加载任何页面。停止和启动应用程序池将清除错误,并且App_Code中的更改将出现。
在同一台服务器上还运行着其他网站,但是每个网站都在自己的应用程序池中。该站点是其应用程序池中唯一的一个站点(集成了v2.0,与其他应用程序池一样)。
这曾经没有发生过。更新App_Code时,我会停顿几秒钟,然后应用程序将按预期执行。我认为它是在自动回收应用程序池。似乎不再发生这种情况了,为每个更改停止/启动应用程序池很痛苦。
我不想将Retail设置为true,因为这会影响我需要的跟踪输出,自定义错误和调试功能。
有什么建议么?谢谢!
我想编写一个脚本并从本地PC运行它,以停止和启动服务器上存在的应用程序池和站点。
应用程序池和站点的价值-服务器的测试价值-SERVER1
任何指导将不胜感激。
application-pool ×10
asp.net ×3
iis-6 ×2
iis-7 ×2
iis-7.5 ×2
.net ×1
app-code ×1
appdomain ×1
c# ×1
cmd ×1
iis ×1
permissions ×1
server ×1
web ×1
web-config ×1