Tag: iis

从我托管的Asp.Net网站获取IIS的运行会话数

我在IIS 6.0中托管Asp.Net网站 我们必须在web.config中重置会话超时 我的客户希望我只有在没有会话正在运行时才重置它(没有人使用该站点)。 我们没有使用Membership,SessionState设置为InProc 我如何知道是否有人使用该网站或任何会话正在运行。 我无法在托管网站中的源代码或除web.config之外的任何其他文件中进行更改。

如何成功使用existingResponse =“Auto”?

所以我从我的MVC网络应用程序返回详细的400错误响应。 设置existingResponse =“PassThrough”有效,但这不是我想要的。 我不希望暴露所有失败,我只想在我有自定义响应时公开它们。 自动,默认设置,但我故意设置它。 但是,文档说必须设置“SetStatus”标志,但我不知道如何做这样的事情。 我编写了以下四种控制器方法来测试它,只有BadRequestD工作。 其他人设置状态代码和状态就好了,但是正文内容是“错误请求”。 public ActionResult BadRequestA() { Response.StatusCode = 400; return Content(“weeeeee”); } public ActionResult BadRequestB() { Response.Status = “400 U DUN MESSED UP”; return Content(“weeeeee”); } public ActionResult BadRequestC() { Response.Status = “400 U DUN MESSED UP”; Response.StatusCode = 400; return Content(“weeeeee”); } public ActionResult BadRequestD() { Response.StatusCode = […]

如何关闭MVC请求的缓存,而不是IIS7中的静态文件?

我正在开发一个ASP.NET MVC应用程序。 大多数控制器操作都不应该被缓存。 因此我在Application_BeginRequest输出no-cache标头: protected void Application_BeginRequest() { HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); HttpContext.Current.Response.Cache.SetValidUntilExpires(false); HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Cache.SetNoStore(); } 应用程序在IIS7上运行,模块配置设置为runAllManagedModulesForAllRequests=”true” 。 这意味着所有静态文件也会通过请求管道(并禁用缓存)。 为这些静态文件启用缓存的最佳方法是什么? 在Application_BeginRequest设置响应缓存头之前是否必须检查扩展?还是有更简单的方法(例如完全绕过静态文件的请求管道)?

如何从WebApi动作返回html页面?

我正在寻找一个WebApi示例,其中默认路由将给定调用者返回给定的html页面。 我的路线和行动设置如下。 我只想向他发送index.html页面,而不是重定向,因为他在正确的位置。 http://localhost/Site // load index.html // WebApiConfig.cs config.Routes.MapHttpRoute( name: “Root”, routeTemplate: “”, defaults: new { controller = “Request”, action = “Index” } ); // RequestControlller.cs [HttpGet] [ActionName(“Index”)] public HttpResponseMessage Index() { return Request.CreateResponse(HttpStatusCode.OK, “serve up index.html”); } 如果我使用这个错误,那么更好的方法是什么,你能指点我一个例子吗? WebApi 2与.NET 4.52 编辑:嗯,改进了它,但得到了json头而不是页面内容。 public HttpResponseMessage Index() { var path = HttpContext.Current.Server.MapPath(“~/index.html”); var content = […]

ASP.NET 2.0-4.0 Web应用程序初始启动速度极慢。

(对不起,如果这是一个很长的问题,它说是具体的) 我工作的公司有很多站点,这些站点已经运行了一段时间没有问题。 这些应用程序混合使用ASP.NET 2.0,3.5和4.0,它们都使用ADO.NET连接到一个SQL Server Standard实例(在同一个Web服务器上),所有这些实例都是用IIS7托管的。 当我们转移到升级的网络服务器时,问题就出现了。 我们尽一切努力使用完全相同的设置来设置服务器,数据库实例和IIS(除了不同的机器名称,以及我们从SQLExpress升级到标准的事实),据我们所知,我们做了。 两台服务器都运行Windows Server 2008 R2(已应用所有当前更新),并收到默认安装。 启动其中一个应用程序时,问题非常明显。 当您到达我们应用程序的登录页面时,页面本身加载速度非常快。 即使从禁用IIS缓存的新计算机加载页面也是如此,即使缓存页面也不可能。 当您输入登录信息并单击登录按钮时,问题实际上是可见的。 由于我们的数据库设计(不是很好),登录过程必须访问许多数据库,理论上最多150个独立的数据库,但实际上通常是2.即使只打开2个数据库(最小),问题也会发生。 不是一个伟大的设计,但我们现在必须忍受它。 当尝试最初打开与数据库的连接时,无论您是连接到2 dbs还是40,整个过程每次都会停止大约20秒。我已经针对该进程运行了一个.NET分析器(jetbrains dottrace),并且我可以从中获取的唯一信息是,对sqlconnection.open()的一个或所有调用占90%的时间。 这只发生在第一次使用应用程序时,但问题更加复杂,因为IIS似乎忽略了我们为它设置的回收设置,并在闲置几分钟后回收应用程序,导致问题再次发生。 我还尝试使用SQL Server探查器来查看哪些数据库操作是导致速度减慢的原因,但是由于所有其他数据库活动,(以及我必须在生产服务器上执行此操作的事实,因为问题不会发生在我们的测试环境中)我无法确定导致停止的确切操作。 我将尝试深夜进入并关闭生产站点以运行SQL分析器,但我可能无法立即执行此操作。 在研究这个问题的过程中,我尝试了几种解决方案 认为它可能是名称解析问题,我尝试修改Web服务器上的hosts文件以及给连接字符串提供IP地址而不是要解析的服务器名称,没有区别。 我听说LLMNR协议导致这样的问题,但我认为尝试通过IP连接或解析主机文件应该已经消除了这种可能性,我承认我从未尝试过实际关闭LLMNR。 我在IIS中增加了空闲超时,回收间隔等,但这似乎没有得到尊重,更不用说解决问题了。 这使我相信有一个设置覆盖了计算机上的IIS应用程序设置。 多个其他代码修复,没有任何区别。 SqlServer设置是否导致问题? 其他我现在忘了的东西。 在帮助我解决这个问题时,我们将非常感谢任何想法,经验或行动者!

从C#代码安装IIS

有什么方法可以从C#代码安装IIS? 我需要为我的应用程序创建一个部署安装程序,但我需要在机器中安装IIS,因此我想validation是否使用C#代码安装了IIS,如果不安装则安装它。 安装程序必须与所有版本的IIS一起使用。 提前致谢。 圣保罗

ASP.NET应用程序中的Thread.Abort导致w3wp.exe崩溃

请不要在此qustion上设置重复标志 – 它不是“为什么发生ThreadAbortException”,它是关于“为什么w3wp.exe进程在ThreadAbortException之后终止”。 假设我们有简单的Web应用程序,其中包含以下代码示例: protected void Page_Load(object sender, EventArgs e) { Response.Redirect(“http://google.com”); } 事实上这意味着什么(参见Response.End()被认为有害吗? ): protected void Page_Load(object sender, EventArgs e) { …response write some data… System.Threading.Thread.CurrentThread.Abort(); } 在我的计算机(Windows 10 Pro + IIS)上,此代码导致IIS池进程终止,错误代码为0x0(重定向不执行)。 在其他计算机(不是Windows 10)上,此代码仅生成ThreadAbortedexception,但进程继续工作(重定向执行)。 有人可以检查这个样本并解释发生了什么吗? 更新这里有一些与此问题相关的Windows事件日志。 记录#1 发生未处理的exception并终止该过程。 应用ID:/ LM / W3SVC / 1 / ROOT / AS 进程ID:6700 例外:System.Threading.ThreadAbortException 消息:线程正在中止。 StackTrace:位于System.Web.Hosting.PipelineRuntime.ProcessRequestNotification的System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer,IntPtr nativeRequestContext,IntPtr […]

IIS7 – 当请求参数的大小超过30mb时,Webrequest以404.13失败

我有一个简单的web方法 [WebMethod] public int myWebMethod(string fileName, Byte[] fileContent) 但是,每当我传递一个大于30mb的字节数组时,我都会收到错误: HTTP错误404.13 – 未找到请求筛选模块配置为拒绝超过请求内容长度的请求。 我的web.config如下: 我一直在搜索,这个问题的最常见原因是maxAllowedContentLength属性默认为30mb。 但是,我已将此设置为100mb,以及httpRuntime的maxRequestLength属性。 我无法在任何地方找到解决方案,而不是设置我上面已尝试过的属性之一。 有没有我错过的东西?

web.config / Global.asax中的自定义error handling不处理不存在的目录

问题是:为什么自定义error handling不适用于不存在的路径/目录? 更新了固定代码(感谢大家为您输入): *更新了web.config和global.asax *的代码 added this to the global.asax to stop IIS from handling my 500 errors after @Kev’s suggestions IIS handled my 500’s these lines fixed that HttpApplication myApplication = new HttpApplication(); myApplication.Response.TrySkipIisCustomErrors = true; 我们在web.config和global.asax有一个自定义error handling的站点设置(设置如下所示)。 我们能够毫无问题地处理所有404和500。 错误被捕获到global.asax中的Application_Error ,记录到DB然后使用HttpContext我们设置状态代码并使用Server.Transfer()将用户移动到相应的错误页面(重定向导致302,并且伤害SEO )。 问题是用户在http://www.example.com/whatever键入时,在Firefox中显示空白页面,在IE中显示IE 404页面。 Firebug没有显示被触发的状态代码,当我调试解决方案时,没有设置的断点在global.asax被命中。 奇怪的是用户可以输入http://www.example.com/whatever/hmm.aspx并且会出现错误。 它似乎只适用于不存在的页面而不是不存在的路径/目录。 下面是我的错误的web.config代码和Application错误的global.asax代码。 我添加了* *来隐藏信息,它们中包含有效的.aspx页面: 网络配置: 码: protected void […]

使用Microsoft.Web.Administration以编程方式安装SSL证书

因此, Microsoft.Web.Administration API非常易于用于为站点创建HTTP和HTTPS绑定: using (ServerManager manager = new ServerManager()) { Site site = manager.Sites[siteName]; site.Bindings.Clear(); site.Bindings.Add(“*:80:”, “http”); site.Bindings.Add(“*:443:”, “https”); manager.CommitChanges(); } 但是如果没有SSL证书,HTTPS绑定就毫无意义。 如何使用此API以编程方式选择证书文件并将其与HTTPS绑定一起使用?