如何使用C#获取特定网站IIS 6程序的应用程序池名称
编辑:我已经使用了DirectoryServices命名空间的方法,但是除非使用相同的代码显式设置,否则无法正确检索应用程序池名称.这意味着如果您使用iis管理器手动添加网站并设置应用程序池,那么当我使用sharepoint创建应用程序并设置不同的appPool这些方法不起作用时,这些代码将无法工作(它将始终返回DefaultAppPool).
IIS的应用程序池设置为“固定请求数”后回收有什么影响?
假设这个数字是100,第99个人连接到我的网站,那么第100个人来了,就会触发应用程序池回收。
这是否意味着会话 1-99 的所有会话信息都将丢失(进程内会话将在应用程序池工作进程重新启动时过期)?
考虑具有连接池内存泄漏问题的ASP.NET应用程序(例如,未正确关闭连接)。
回收应用程序池是否清除了连接池(从而允许建立更多连接)?
如果将连接保留在内存中,直到垃圾收集器将其删除为止,那么在重新启动应用程序池时会发生这种情况吗(或者是否可以将其保留)?我还了解到垃圾回收器也可以随时清理它们,但是它们是否仍在使用中并且在重置或重新启动应用程序池之前无法回收?
我正在审查的系统的最终目标显然是纠正代码以正确管理连接,并且我试图对垃圾收集/应用程序池过程有更多的了解。
asp.net memory-leaks iis-6 connection-pooling application-pool
我在尝试从命令行运行的 vbs 文件中有以下内容:
strServerName = "ServerName"
strAppPoolName = "DefaultAppPool"
set objAppPools = GetObject("IIS://" & strServerName
& "/w3svc/AppPools/" & strAppPoolName & "")
objAppPools.Recycle()
Run Code Online (Sandbox Code Playgroud)
然而,当我从 cmd 行运行 vbs 时,我收到以下错误:
Microsoft VBScript 运行时错误:ActiveX 组件无法创建对象:“获取对象”_
我在本地机器上运行 XP,远程机器有 IIS 7。
我怎样才能让它发挥作用?
我在 .Net 中有一个应用程序,它为其他应用程序执行各种管理/配置。我需要能够停止和启动应用程序池。我已经实现了这一点,但前提是我将应用程序池作为本地系统运行(这通常被认为是一个坏主意)。
最初,我使用 Process.Start (使用适当的 ProcessStartInfo 对象)启动了 appcmd.exe,但这最终导致我的退出代码为 -1073741502,进一步的研究表明我需要使用 Windows SDK 进行调试,因为它与程序集未加载,因此我在命名空间中找到了一个似乎更简单的解决方案Microsoft.Web.Administration:
我使用下面的代码,但它似乎要求运行它的 AppPool 具有本地系统的身份(否则我得到System.UnauthorizedAccessException) - 有没有一种方法可以使用权限较低的帐户启动/停止(我更喜欢使用应用程序身份) - 虽然暂时提升权限也是可以的。
Dim serverManager As New ServerManager()
Dim applicationPoolCollection As ApplicationPoolCollection = serverManager.ApplicationPools
For Each applicationPool As ApplicationPool In applicationPoolCollection
If applicationPool.Name = appPoolName Then
applicationPool.Stop()
applicationPool.Start()
End If
Next
Run Code Online (Sandbox Code Playgroud)
我已将自定义帐户设置为身份,但我无法确定该用户的最小 ACL 需要是多少。作为测试,我将用户添加到本地管理员组,但仍然得到System.UnauthorizedAccessException- 这表明我需要为用户配置特定权限,但我不确定这是什么或如何做到这一点。有人可以帮忙吗?
.net iis-7 application-pool .net-3.5 applicationpoolidentity
我尝试使用wix安装创建一个新的网站.没关系,但我无法将新的或现有的网络应用程序池分配给新的网站.iis:网站标记不包含WebAppPool属性.如何将Web应用程序池分配给Web站点.你可以看到我的代码.
谢谢你的帮助.
<Component Id="WEB_SITE_CONFIGURE_COMPONENT" Guid="{35087032-D049-48C8-BCAD-1FEFD0C06A25}" NeverOverwrite="yes" Shared="yes" Permanent="yes" Transitive="yes">
<Condition><![CDATA[WEBSITE_INSTALLTYPE<>2]]></Condition>
<CreateFolder Directory="WEBSITE_FOLDER"/>
<iis:WebSite Id="WEB_SITE" Description="[WEBSITE_NAME]" SiteId="*" Directory="WEBSITE_FOLDER" ConfigureIfExists="yes" AutoStart="yes" StartOnInstall="yes">
<iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" />
</iis:WebSite>
<RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigSite" Value="1" Type="string"></RegistryValue>
</Component>
<Component Id="WEBAPP_POOL_CONFIGURE_COMPONENT" Guid="{316738A6-26A2-4C14-9AB9-B2066E3FA288}" KeyPath="yes" Permanent="yes" Transitive="yes">
<Condition><![CDATA[(WEBSITE_INSTALLTYPE=0) OR (USE_CUSTOM_WEBSITE_FOLDER=1)]]></Condition>
<iis:WebAppPool Id="APP_POOL" Name="[WEBAPP_POOL_NAME]" ManagedPipelineMode="Classic" ManagedRuntimeVersion="v4.0"/>
<RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigPool" Value="1" Type="string"></RegistryValue>
</Component>
<Component Id="WEPAPP_CONFIGURE_COMPONENT" Guid="{F95B024E-B6B6-4E6C-AC35-9B1086FC3521}" Transitive="yes">
<Condition><![CDATA[(WEBSITE_INSTALLTYPE<>2) AND ((WEBSITE_INSTALLTYPE=0) OR (USE_CUSTOM_WEBSITE_FOLDER=1))]]></Condition>
<iis:WebVirtualDir Id="VIRTUAL_DIR" Alias="[WEB_APP_NAME]" Directory="WWW_FOLDER" WebSite="WEB_SITE">
<iis:WebApplication Id="WEB_APP" Name="[WEB_APP_NAME]" WebAppPool="APP_POOL"/>
</iis:WebVirtualDir>
<RegistryValue Root="HKLM" Key="$(var.DefaultRegistryKey)" Name="ConfigVirtualDir" Value="1" Type="string"></RegistryValue>
</Component>
Run Code Online (Sandbox Code Playgroud) 通常,我根据应用程序池标识授予文件夹访问权限,格式为:
IIS AppPool\[app_pool_name]
Run Code Online (Sandbox Code Playgroud)
在这个特定的新服务器上,当我尝试编辑文件夹的安全设置并添加该特定用户条目时,我得到了
"object IIS AppPool\XXXXXX cannot be found"
Run Code Online (Sandbox Code Playgroud)
知道这是为什么吗?我确认应用程序池已设置为ApplicationPoolIdentity.
我使用的是 IIS 7.5 和 Windows Server 2008 R2。
windows iis application-pool windows-server-2008 applicationpoolidentity
我们在Microsoft Azure中托管了一个Web服务器.它是Windows Server 2008 R2 Datacenter版本,64位.
对于在此计算机上托管的网站,我需要更改applicationhost.config文件.但是,我最近对IIS所做的更改未显示在配置中.我添加了一个新的应用程序池,并将该特定网站添加到该应用程序池中.我重新启动了网站,文件的"修改日期"已更新,但应用程序池不存在.
现在我正在编辑文件C:\Windows\System32\inetsrv\config,但也有一个C:\Windows\SysWOW64\inetsrv\Config,但后者几个月没有更新.
我看错了文件吗?变更是否立即保存?我是否需要完全重启IIS而不仅仅是相关网站?
我们已经64-bit Windows server并且需要32-bit mode在我们的网站使用的应用程序池中明确启用,因为MS Jet Engine Data Provider used to import data from Excel它不会运行.
我不确定,如果我们启用32-bit模式,我们仍然会获得64-bitServer 的优势吗?
我使用IIS 7.0,我想知道如何在Web配置文件中设置Appliacation池.