从方法中传递DataReader到.cs页面--使用CommandBehavior.CloseConnection,但连接没有关闭
我在类中使用以下方法 - 我从.cs页面填充数据标准: public static SqlDataReader getinfo(string username, string url) { //Initialise connection, string stored in Web.config SqlConnection conNs = new SqlConnection(ConfigurationManager.ConnectionStrings["conNs"].ConnectionString); SqlCommand cmdNs = new SqlCommand("usp_getinfo", conNs); cmdNs.CommandType = CommandType.StoredProcedure; cmdNs.Parameters.Add(new SqlParameter("@username", SqlDbType.VarC
2 2024-04-26
编程技术问答社区
IIS应用池进程占用大量内存
我的IIS应用程序池流程之一有一个非常奇怪的问题.我最近一直在获得系统.基本上,我有一个使用Web服务从我们的大坝获取文件的脚本.然后,它检查文件存储一个字节数组,然后使用响应输出文件.我唯一遇到问题的是PDF现在超过20MB时,似乎有时会导致错误.如果我增加应用程序池中的内存,它将暂时解决问题.我观看了W3WP.EXE进程,并看到有时在运行此脚本时,将内存增加到400MB,我们拥有的最大文件是45MB,这会导致这种类型的行为发生.这个问题似乎每天晚上都消失了,早晨它将工作一段时间,然后开始再次做同样的事情.此应用程序是C#ASP.NET应用程序.它在SharePoint内部运行. 观看了一段时间后,我确实注意到,由于这些PDF是在浏览器窗口中渲染的,直到文件完全下载,它才不会从内存中释放.这是有道理的,但我可以看到这有些问题.如果我有几个人在加载文件,则平均(没有文件下载)内存使用385,000 kb.it可以轻松到达900,000-1,100,000 kb,这是应用程序池的极限
4 2024-04-25
编程技术问答社区
server.transfer,应用池设置为 "集成"。
我有一个Facebook应用程序,出于各种原因,我需要将其运行,以"集成"设置为"集成".但是,当我将应用程序池更改为"集成"时,server.transfer似乎不再起作用(在"经典"模式下效果很好).错误是: 未发现请求类型'post' 的HTTP处理程序 有什么想法? 解决方案 尝试将代码从Server.Transfer更改为Server.TransferRequest. 我在IIS7上以集成模式运行我的应用程序时遇到了相同的错误. "找不到http处理程序的请求类型'获取'"这个简单的更改解决了我的问题.
12 2024-04-25
编程技术问答社区
如何在IIS 8上以编程方式设置应用池身份
我正在使用IIS 8运行Windows Server 2012.我已经安装了IIS 6 Metabase兼容性.我一直在尝试弄清楚如何使用.NET 4.5更改IIS 8的应用程序池标识 - 我发现的所有示例均为IIS 6和7. . 这是我拥有的: public class InternetInformationServices { public void SetApplicationPoolIdentity(string appPoolName, string domain, string username, string password) { try { string metabasePath = "IIS://Localhost/W3SVC/AppPools"; DirectoryEntry myAppPool; DirectoryEntry appp
4 2024-04-25
编程技术问答社区
4.0 和 2.0 应用程序之间的 Asp.Net 表单验证 SSO
4.0框架应用程序和2.0框架应用程序之间的SIGLE-SIGN-ON似乎已损坏. 我有一个旧的应用程序构建在ASP.NET Framework 2.0上,以及在ASP.NET Framework 4.0上构建的新应用程序,我正在尝试在两者之间进行配置. 我已经完成了所有适当的呼气,以使用相同的验证键,解密,验证和解密属性以及相同的认证名称,域,保护和路径属性. > 奇怪的是,这种配置在我的本地开发机上正常工作: - Windows 7 Ultimate(服务包1) -2.0在应用程序池中运行的应用程序设置为v2.0集成 -4.0在应用程序池中运行的应用程序设置为v4.0集成 但是,在部署服务器Windows事件日志中,我获得"表单身份验证因请求失败.原因:提供的票证是无效的."::: -Windows Server 2008 R2标准(服务包1) -2.0在应用程序池中运行的应用程序设置为v2.0集成 -4.0在应用程序池中运行的应用程序设置为v4.0集成
4 2024-04-22
编程技术问答社区
如何检测我目前在哪个应用池下运行?(IIS6)
我需要知道如何检测当前的应用程序池,以便以编程方式进行回收利用. 有人知道如何为IIS6做到这一点? 我当前用于回收App-Pool的代码是: /// /// Recycle an application pool /// /// public static void RecycleAppPool(string IIsApplicationPool) { ManagementScope scope = new ManagementScope(@"\\localhost\root\MicrosoftIISv2"); scope.Connect(); ManagementObject appPool = new ManagementObject(scope, ne
8 2024-04-21
编程技术问答社区
以编程方式将IIS应用池身份的 "用户 "分配给组
问题:创建新的IIS应用程序池并设置为将应用程序池标识用于权限时,我不确定如何将这些身份添加到诸如管理员或绩效柜台用户之类的用户组中. 背景:我目前正在编写使用Microsoft.web.administration的C#.NET库,以执行以下操作: 检测II 7.x是否已安装,如果是的,则是哪些组件. 安装或升级II 7.x到提供的所需组件的列表. 通过IIS创建/管理一个或多个网站. 每个网站自动创建/管理一个应用程序池 上下文是,可执行安装程序将使用此库来提供Windows Server OS上Web服务器和网站/服务的自动部署,作为较大软件部署的一部分.到目前为止,以上所有内容均已实施,测试,并且(主要是)功能性,除了需要在应用程序池/网站创建中执行的某些权限自动化. 在我安装新网站的方法中,我创建了一个新的应用程序池,并强迫它使用应用程序池标识: static public void InstallSite(string name, stri
4 2024-04-19
编程技术问答社区
创建一个使用.NET 4.0的应用程序池
我使用以下代码创建一个应用程序池: var metabasePath = string.Format(@"IIS://{0}/W3SVC/AppPools", serverName); DirectoryEntry newpool; DirectoryEntry apppools = new DirectoryEntry(metabasePath); newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool"); newpool.CommitChanges(); 如何指定应用程序池应使用.NET Framework 4.0? 解决方案 我从您使用的IIS7的标签中看到.除非您绝对需要,否则请勿使用IIS6兼容性组件.您首选的方法应该是使用使用此功能创建一个应用程序池并将.NET Framework版本设置为4.0,请执行此操作: using Microsoft.Web.Administrati
0 2024-04-17
编程技术问答社区
用C#检查应用程序池(IIS 6)的状态
如何使用C#检查IIS6应用程序池的状态? 例如,我想知道它是否正在运行! 预先感谢您的帮助! 解决方案 http://msdn.microsoft/library/ms524962.aspx 您可以检查AppPoolstate属性: protected void status() { string appPoolName = "dev.somesite.com"; string appPoolPath = @"IIS://" + System.Environment.MachineName + "/W3SVC/AppPools/" + appPoolName; int intStatus = 0; try { DirectoryEntry w3svc = new DirectoryEntry(appPoolPath); intSt
16 2024-04-16
编程技术问答社区
在IIS中列举应用程序池
我想知道是否有一种方法可以使用ASP.NET 3.5在本地IIS服务器上列举应用程序池的集合(不是给定池中的应用程序,而是池本身)因此,有人可以提供有关如何完成的链接或示例吗? (我忘了添加IIS版本为6.0). 解决方案 这应该有所帮助: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.DirectoryServices; namespace AppPoolEnum { class Program { static void Main(string[] args) { DirectoryEntries appPools = new DirectoryEntry("IIS://localhost/W3SVC/App
14 2024-04-15
编程技术问答社区
检查IIS应用池的状态
我正在开发Windows服务,该服务将在每5分钟内获取IIS应用程序池状态信息,并存储在数据库或文本文件中...例如运行或停止. 在异常消息以下: Microsoft.web.administration.dll中的类型为" System.unauthorizedAccessexception"的例外,但在用户代码中未处理其他信息.其他信息:拒绝访问. (Hresult的例外:0x80070005(e_accessdenied)) 以下是我尝试过的代码: static void Main(string[] args) { const double interval60Minutes = 5 * 5 * 1000; // milliseconds to one hour Timer checkForTime = new Timer(interval60Minutes); checkForTime.Elapse
0 2024-04-14
编程技术问答社区
如何通过代码获得应用池的名称(C#,ASP.net)。
我想通过我的应用程序回收应用程序池. 以前,我在数据库中存储了应用程序池名称,并将其用于回收. 但是过去,我们将应用程序从一个应用程序池中移到另一个应用程序,有时我们忘记更新数据库中的应用程序池名称. 所以我想通过应用程序获取应用程序池名称并将其用于回收. 解决方案 可能会有所帮助:ApplicationPoolName属性 名称空间:Microsoft.web.administration 汇编:Microsoft.web.administration(在Microsoft.web.administration.dll中) 其他解决方案 在许多情况下,仅从环境变量中读取应用程序池的名称可能就足够了: var apppool = System.Environment.GetEnvironmentVariable( "APP_POOL_ID", EnvironmentVariableTarget.Process);
6 2024-04-13
编程技术问答社区
以编程方式获取应用池身份
如何在C#中以编程方式获得AppPool的身份?我想要应用程序池用户,而不是当前登录的用户. 解决方案 您可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name来确定当前应用程序正在运行的身份. 此链接提供了一个不错的实用程序,显示了身份ASPX运行. 其他解决方案 您需要参考Microsoft.web.administration(在Microsoft.web.administration.dll中). Microsoft.web.administration.dll位于C:\ Windows \ System32 \ inetsrv. 中 //Add this to your using statements: using Microsoft.Web.Administration; //You can get the App Pool identity like this: publ
4 2024-04-11
编程技术问答社区
当我设置IIS池的LoadUserProfile时,到底会发生什么?
我面临以下问题. 我运行以下代码 var binaryData = File.ReadAllBytes(pathToPfxFile); var cert = new X509Certificate2(binaryData, password); 在两个过程中.其中一个过程在LOCAL_SYSTEM下运行,此代码成功.在属于"用户"本地组的本地用户帐户下,另一个在IIS内部运行,在那里我得到以下例外: System.Security.Cryptography.CryptographicException Object was not found. at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFr
4 2024-04-10
编程技术问答社区
重启(回收)一个应用程序池
如何从c#(.net 2)重新启动(回收)IIS应用程序池? 感谢您发布示例代码? 解决方案 如果您在 IIS7 上,则如果停止,这将执行此操作.我认为您可以进行调整而无需显示. // Gets the application pool collection from the server. [ModuleServiceMethod(PassThrough = true)] public ArrayList GetApplicationPoolCollection() { // Use an ArrayList to transfer objects to the client. ArrayList arrayOfApplicationBags = new ArrayList(); ServerManager serverManager = new ServerManager(); ApplicationPoolCollection
8 2024-04-10
编程技术问答社区
使用iisapp.vbs启动MyAppPool
我有一个批处理文件,该文件使用以下脚本回收MyAppPool. cscript.exe %windir%\system32\iisapp.vbs /a MyAppPool /r 但是,当MyAppPool停止时,我将无法回收它.我想要的是检查天气MyAppPool如果停止,然后开始,然后进行回收,然后再停止. 好吧,我是这项IIS的完整新手,从未从事过.我正在使用Window Server 2003和IIS6. 解决方案 您可以编写自己的.vbs脚本,以查找AppPool的状态,并在停止时启动它.类似: //编辑: Option Explicit If WScript.Arguments.Count 1 Then Wscript.Echo "No AppPoolName provided. Iterate through all AppPools" iterate_and_start_all_apps() Else Di
4 2024-03-29
编程技术问答社区
Azure网站的应用池超时
是否有一种方法可以设置在Azure站点下运行的Web站点的应用程序池的超时. 我有一个网站在那里运行,似乎需要在闲置一段时间时再次旋转. 解决方案 Windows Azure网站支持两种模式,共享和保留. 在共享模式下,您的网站进程(W3WP)与其他人一起运行,共享包括CPU和内存在内的资源.在闲置之后,运行时(即Windows Azure网站系统)从内存中删除站点 - 那是您的网站无法获得任何流量的时候.运行时使决策删除站点,基于许多参数,即使您更改配置,也可能不适用,因为运行时可能会覆盖该配置. 如果您正在寻找始终处于内存中的网站,则可能需要考虑切换到保留的实例,其中您的网站在其自己的VM上运行,并且系统更加灵活地更加灵活在资源利用方面. Yochay(PM Azure网站) 其他解决方案 由于相关答案是在评论中很容易错过的.当前,Azure Web应用程序支持Always On功能,该功能可以使您的应用保持在内存中.它在Basic和上层层中可
2 2024-03-26
编程技术问答社区
通过命令行设置默认的应用池回收
我正在尝试在Azure Web角色的开头执行以下命令,以设置将回收应用程序池的特定时间: %windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.schedule.[value='00:08:00'] 但是当我这样做时,我会收到错误: ERROR ( messsage:Cannot find requested collection element. ) 有人知道如何使用AppCMD设置默认应用程序池设置以使其在UTC上午8:00回收?请注意,特定时间的收集最初是App Pool回收的空白. 解决方案 i在一段时间后重新启动应用程序池,而不是一天中的某些时间.尽管您的尝试表明您也在做同样的事情吗?但这建议您尝试每8分钟重新启动一次应用程序池吗?无论如何,这就是我使用的:
10 2024-03-23
编程技术问答社区
Glimpse MVC3 DLL被'遗忘&39;为应用池回收的一部分
我们正在尝试获取瞥见在我们的环境中启动,但遇到了一个奇怪的问题. 我们已经安装了limpse.core,limpse.aspnet和limpse.mvc3.dll,当我们配置web.config以启用瞥见所有内容时,一切正常,直到应用程序池recycles recycles .一旦AppPool回收,就好像网站"忘记"有关limpse.mvc3.dll和mvc3 tabs(执行,模型,元数据)消失了. 这是(对我们来说)复制的步骤: 修改web.config包括瞥见配置 所有标签将显示包括执行,元数据和模型绑定 执行应用程序池回收 MVC3瞥见选项卡将不再显示(但其他人会显示) 在AppPool回收之前,limpse.axd显示以下注册选项卡: limpse.aspnet(1.3.1) 配置-Glimpse.aspnet.tab.configuration 环境 - 瞥见aspnet.tab.environment 请求 - limpse.asp
0 2024-03-16
编程技术问答社区
如何使AppDomain中的ASP.NET程序集保持活力?
方案:我已经使用Web部署项目部署了一个N-Tier Enterprise ASP.NET应用程序.所有层都会产生由ASP.NET应用程序消费的独立组件. 问题:运行应用程序时.部署后第一次,将相关组件加载到内存中需要大量时间.但是一旦加载了照明快速应用程序.如果没有用户访问该应用的用户,IIS将从内存中卸载程序集,当用户尝试在以后的实例上访问该应用程序时,它将继续加载所有汇编,再次花费相同的时间来加载.第一次这样做. 我正在寻找一种解决方案,使我能够将我的组件加载到内存中,持续覆盖集成的挥发性性质,朝着记忆居住. 或任何其他可以让我的用户愉快地使用解决上述问题的应用程序的解决方案. 解决方案 在 IIS 6 中,转到"应用程序池"部分,并在池上右键单击>属性,该属性托有有关ASP.NET应用程序的属性.转到"绩效"选项卡,然后取消选中""关闭工作"过程,因为闲置了:" 在 iis 7 中,转到连接窗格并找到应用程序池,然后选择托管您应用程序的池的高级设置
8 2024-03-16
编程技术问答社区