有没有办法可以确定c#中的应用程序池(在IIS7中)已启动多长时间(自启动以来的时间,或上次重启)?
我在IIS 6.0中有一个使用带有自定义服务帐户的应用程序池的网站.当我浏览网站时,出现"服务不可用"错误,事件日志中的错误说明
应用程序池"SampleAppPool"的标识无效,因此万维网发布服务无法创建工作进程来为应用程序池提供服务.因此,应用程序池已被禁用.
我觉得实用"ASPNET_REGIIS"可以用来访问权限授予根据帐户IIS元数据库的这篇文章,但是是正确的方式来解决这个问题?因为此实用程序用于多个事情,并且可能不仅仅是授予帐户权限,还是应该手动将帐户添加到IIS_WPG组?
asp.net security iis application-pool windows-authentication
几天中我的应用程序池停止并出现以下错误:
由于为该应用程序池提供服务的进程出现一系列故障,应用程序池"MyApplicationPool"正在自动禁用.
怎么解决这个?
谢谢,任何建议.
我试图让IIS 7应用程序池回收,启动,停止等事件记录到Windows 事件日志.我按照本文中列出的步骤进行了操作,但没有取得任何成功.我重新启动了应用程序池,事件日志中没有记录任何内容.(我检查了"应用程序"和"系统"日志.)但是当我执行IIS重置时会被记录.
我们应该多久回收一次应用程序池?
有人告诉我,我应该每24小时回收一次应用程序池吗?
为什么我需要回收应用程序池?
我们会得到什么样的好处?
我需要一个Powershell命令,它相当于在IIS中添加一个网站,但是需要"应用程序池"的绑定:

到目前为止,我可以添加一个这样做的网站:
New-Item iis:\Sites\swmarket -bindings @{protocol="http";bindingInformation="80:swmarket"} -physicalPath c:\inetpub\wwwroot
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在新网站中设置"应用程序池".有什么方法可以看到所有的绑定吗?
当用户单击按钮时,我正在从ASP.NET应用程序运行可执行进程.此过程会创建多个文件,并将其提供给最终用户.我无法确切地看到进程是做什么或不做什么,但是直到我将admin用户指定为服务器上的应用程序池标识才行.我正在使用IIS7.
using (var proc = new Process())
{
proc.StartInfo.FileName = Server.MapPath("~/Testing/Demo/MyExe.exe");
proc.StartInfo.Arguments = String.Format("\"{0}\"", commandFilePath);
proc.StartInfo.UseShellExecute = true;
proc.Start();
proc.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
我认为这通常是一件坏事.您能否让我深入了解为正常ApplicationPoolIdentity帐户启用此功能需要做些什么?
谢谢!
如何通过PowerShell命令检索与特定IIS AppPool关联的应用程序数?
我们可以手动查看相关的应用程序:
Get-Item IIS:\AppPools\AppPoolName
Run Code Online (Sandbox Code Playgroud)
但是,如果我们手动想要选择Applications列,则无法进行.此外,该Applications列未列在其中| Get-Member *.
我正在创建现有生产站点的测试版本.站点内部存在虚拟Web服务应用程序 - 两个Web配置具有相同的连接字符串.
生产Web配置中没有"清除"标记,并且站点和Web服务在两个单独的应用程序池上共存.
但是,在测试站点上,每次浏览到Web服务URL时,都会收到配置错误"已添加条目'ConnectionString'."
测试站点和相应的虚拟应用程序使用自己独立的应用程序池.有任何想法吗?
谢谢吉姆
我在.NET Web应用程序中有以下代码块,用于查询用户的AD
using (DirectoryEntry de = new DirectoryEntry(ldap))
{
using (DirectorySearcher adSearch = new DirectorySearcher(de))
{
adSearch.Filter = "(&(objectCategory=person)(objectClass=user)(samAccountName=username))";
SearchResult adSearchResult = adSearch.FindOne();
}
}
Run Code Online (Sandbox Code Playgroud)
运行此命令时,有时会出现以下错误:
System.Runtime.InteropServices.COMException(0x80005000):System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
在System.DirectoryServices.DirectoryEntry.Bind()在System.DirectoryServices.DirectoryEntry.get_AdsObject()在未知错误(0x80005000)System.DirectoryServices.DirectorySearcher.FindOne()上的.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
引发此错误时,每次运行时都会出错。若要更正此问题,我必须转到与此Web应用程序关联的IIS应用程序池并对其进行回收。回收后,该代码在一段时间内有效。然后几个小时后错误再次出现。
需要注意的其他信息:
对于在IIS中寻找永久解决方案的任何建议,我将不胜感激。我不能每隔几个小时就回收一次应用程序池。
谢谢
application-pool ×10
iis ×6
iis-7 ×4
asp.net ×2
c# ×2
powershell ×2
event-log ×1
logging ×1
security ×1