我有一个WCF Web服务,它保存在IIS上的应用程序池中.
最近,当我试图调用这个Web服务时,我一直得到"服务不可用".我尝试做的第一件事是重新启动应用程序池.我做了它,几秒钟后,它崩溃并停止了.
查看事件查看器,我发现了这些消息,目前无法帮助我找到问题所在.
为应用程序池"X"提供服务的进程报告失败.进程ID为'11616'.数据字段包含错误编号.
有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的"帮助和支持中心" .
得到其中几个后,我得到了这个:
由于为该应用程序池提供服务的进程中出现一系列故障,应用程序池"X"将自动禁用.
有关详细信息,请参阅http://go.microsoft.com/fwlink/events.asp上的"帮助和支持中心" .
我已经检查了权限和应用程序池配置,但一切似乎都没问题.
有没有人经历过这个?
提前致谢.
asp是否在配置了网站的IIS应用程序池中运行?或者仅适用于asp.NET应用程序的应用程序池.
这两者如何相互关联,我需要知道什么才能理解谁在做什么以及他们在做什么......
我们遇到的问题是,解决方案似乎是为特定站点回收应用程序池(我们无法控制的CMS问题,我不会在此处讨论).
我的问题是,虽然这似乎有效,但如果网站上有用户进行付款等,如果我们回收将会启动它们吗?
谢谢邓肯
如何更改IIS应用程序池seetings/properties programmatic(C#)?例如,如何更改"启用32位应用程序"设置?在MSDN或Technet上是否有IIS 6和IIS 7的属性引用?在此先感谢您的帮助 !
我们的网站是在.NET中,但也有一些旧的ASP和32位库.它已经工作了一段时间(2年).但是在过去的一个月里,我们在IIS7服务器上看到了以下错误,我们无法追踪并修复:
"错误应用程序w3wp.exe,版本7.0.6001.18000,时间戳0x47919413,错误模块kernel32.dll,版本6.0.6001.18215,时间戳0x4995344f,异常代码0xe053534f,错误偏移0x0002f328,进程ID 0x%9,应用程序启动时间0x% 10."
我们能够重现错误:
我们的一个.ASPX页面开始加载,执行代码和查询(我们在整个页面都有response.flush()来跟踪代码中断的位置),然后它突然停止,我们在IIS中得到上述错误.
页面停止加载,没有response.flush(),它没有重定向到我们的error.aspx页面(在web.config中配置)
错误不会一直发生.有时,它连续发生3次,然后它正常工作15分钟不间断,并正确重定向到error.aspx.
我们得到的错误是经典的:"BOF或EOF都是True,或者当前记录已被删除."
当错误发生时,从任何浏览器的页面挂起和其他所有会议在同一台计算机上都挂着网页以及(顺便说一句,我们只允许1个工作进程,同时我们正在测试).从其他计算机,该网站加载正常.
我可以回收应用程序池,杀死w3wp.exe,重启IIS.没什么可做的.再次成功加载页面的唯一方法是重新启动处理会话状态的MS SQL.我不知道这是为什么,但我们猜测,在用户会话Cookie的浏览器指向它没有正确结束(由于上述崩溃)和IIS正在等待它终止处理更多的代码(线程? ).如果有人能够更好地解释这一点,那将非常有帮助.是否有超时我们可以设置为"终止"线程?它是否与MS SQL相关?
我还查看了私有和虚拟内存的用法,因为我认为我们的代码不是最有效的,我确信我们有剩余的内存泄漏.但是,即使私有和虚拟内存都很低(每个100MB以下),我也看到了页面崩溃.
我已经使用调试诊断和WinDbg,从而使在此间表示:http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag .aspx,但我们无法使windbg工作,这是我们目前正在尝试做的事情.
如果有人可以帮助我们或指出我们朝着正确的方向发展,那真的很棒,谢谢.
早在十月份,我们将其中一个站点(在IIS 6上)从.net 3.5升级到.net 4.0.从那以后,我们每天都收到以下警告和错误:
警告:
由于以下原因,ISAPI'c:\ windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll'报告为不健康:'检测到死锁'.
错误:
无法在同一IIS进程中运行两个不同版本的ASP.NET.请使用IIS管理工具重新配置服务器以在单独的进程中运行应用程序.
我们检查了所有应用程序并确保它们在正确的ASP.NET版本上运行,并且还在它们自己的独立应用程序池中运行.
我们在记录错误时查看了IIS日志,但这并未提供有关该问题的任何线索.是否有可用的工具可以为我们提供更多信息,以确定哪个应用程序导致错误以及当时发生了什么?
我们有一个活动目录域(让我们称之为foodomain)和一个foodomain\fooAppPoolUser用于IIS应用程序池标识的域用户帐户().
我们希望在此用户帐户下运行应用程序池,而不是在Network Service新用户帐户下,AppPoolIdentity因为我们必须访问SQL服务器并且在IIS(具有自己的应用程序池)上有多个应用程序访问不同的数据库.
问题是我无法找到明确的HOW-TO解释,必须为此用户帐户设置哪些用户权限以及如何设置IIS以使其正常工作.
首先我得到错误(不幸的是我记不起哪些错误),然后我添加fooAppPoolUser到本地管理员组(Administrators我知道,只是为了测试),然后它工作了.现在我再次删除了用户,重新启动了IIS,它仍然有效.
所以我有点困惑,想知道配置/设置如何让它工作.
我读到的Somwhere,该帐户需要具有" 身份验证后模拟客户端 "用户权限.这就是我将帐户添加到Admin组的原因(用户权限分配是通过组策略阻止的,但如果确实需要,这肯定可以更改.
我希望我很清楚问题是什么,并希望有人得到答案.
我有一个非常简单的Web应用程序(asp.net MVC3,.net 4,使用IIS而不是Visual Studio的嵌入式服务器,64位Windows 7).当我更改我的应用程序的应用程序池中的设置并将"启用32位应用程序"设置为False时,我的应用程序的视图显示,但没有静态内容(Content/Site.css或Scripts/myScript.js)显示起来.相反,我在这些请求上获得状态代码500.
HTTP错误500.0 - 内部服务器错误由于发生内部服务器错误,无法显示页面.
我正在更改此值的原因是我正在尝试使用64位Oracle.DataAccess.dll,如果我将此值设置为True,则会导致应用程序池在WOW64模式下运行并尝试加载dll格式错误.
我在网上搜索了一段时间,找不到很多关于此的信息.我试过玩文件的权限,我尝试用各种标志运行aspnet_regiis.我没有想法.在64位模式下运行时,为什么IIS不会提供此静态内容?
我想引用这些链接,因为它们突出了我的问题
为IIS APPPOOL创建SQL Server登录 - 在不同的计算机上创建IIS和SQL Server
和
将ASP.NET MVC应用程序的IIS 7.5应用程序池标识配置为SQL Server 2008 R2上的登录.
总结帖,我有ServerA跟IIS我的应用程序池,并ServerB用SQL Server.ServerASQL承认我的应用程序池作为登录,因为这是IIS居住,但现在我需要我的应用程序池来访问SQL的ServerB.
我试图ServerB为我的应用程序池创建一个SQL登录Domain\ComputerName$\IIS APPPOOL\AppPoolName,但它无法识别.它承认Domain\ComputerName$,但我的应用程序仍然无法正常工作.
我是否在正确的轨道上,如果是这样,我指定了什么用户名?我的DBA技能并不像他们应该的那样敏锐.谢谢.
我正在尝试periodicRestart使用powershell脚本设置属性,但我试图使用与我在代码示例中看到的略有不同的语法.
根据设置使用PowerShell回收应用程序池的特定时间,这是一种方法:
Clear-ItemProperty $iisAppPoolName -Name Recycling.periodicRestart.schedule
Set-ItemProperty $iisAppPoolName -Name Recycling.periodicRestart.schedule `
-Value @{value="01:00:00"}
Run Code Online (Sandbox Code Playgroud)
但是,我已经有一个代码块,我在这里设置属性$appPool如下:
$appPool = New-WebAppPool $iisAppPoolName
$appPool.managedPipelineMode = "Classic"
$appPool.managedRuntimeVersion = "c4.0"
$appPool.recycling.periodicRestart.time = [TimeSpan]"00:00:00"
$appPool | Set-Item
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,所以我想添加以下行:
$appPool.recycling.periodicRestart.schedule = @{value="01:00:00"}
Run Code Online (Sandbox Code Playgroud)
但我无法获取@{value="01:00:00"}要采用的语法.该schedule属性期待一个哈希表,这是我通过它.

有任何想法吗?
application-pool ×10
iis ×6
asp.net ×4
iis-7 ×3
iis-6 ×2
iis-7.5 ×2
.net ×1
asp-classic ×1
asp.net-mvc ×1
powershell ×1
sql-server ×1
w3wp ×1
wcf ×1