草庐IT

c# - 使用 IIS 中托管的 WCF 处理长时间运行的服务操作的正确方法是什么?

我正在构建一个将公开多个操作的WCF服务,它将在IIS中运行,因为它需要HTTPS端点。大多数操作将在几秒或更短时间内执行;但是,其中一两个操作需要5-90分钟。此服务的主要使用者将是ASP.NETMVC应用程序;处理这个问题的正确方法是什么?我应该增加超时并进行一些ajax调用吗?我是否应该向我的数据库添加一个表,让长时间运行的操作更新这个数据库,并让Web界面每分钟轮询一次这个表?我不确定对此普遍接受的最佳做法是什么(如果有的话)。 最佳答案 我为我的高级项目写了一些类似的东西,基本上是一个作业调度框架。我选择了将“工作”的“状

c# - ASP.NET MVC 应用程序中的非托管 DLL 导致应用程序池在 IIS 服务器上停止

我的ASP.NETMVC应用程序使用用C++编写的非托管外部DLL。该网站在VisualStudio中运行良好,可以正确定位和访问外部DLL。但是,当网站在本地网络服务器(运行IIS7.5)而不是VisualStudioIISExpress上发布时,我收到以下错误:HTTPError503.Theserviceisunavailable.外部DLL位于网站的bin目录中。在查看IIS日志时,我注意到每次调用dll时defaultapppool都会停止。HTTP/1.1GET/Bio/Select/35031DisabledDefaultAppPool我尝试了以下方法:我将DLL放在Sy

c# - WebResource.axd 和 ScriptResource.axd 加载非常慢

在正常情况下,两个.axd文件以正常速度加载到浏览器,即几百毫秒。通过查看chrome中的瀑布图(网络图)或其他调试工具,我可以看到它们与所有其他页面元素一起正常加载。偶尔会出现一些问题,这两个文件加载大约需要一分钟。以下是一些其他注意事项:页面上的所有其他元素均以正常速度加载。一般一天出现一到两次,持续几分钟。我可以同时在性能计数器上看到RequestsQueued峰值。在此期间CPU、内存和磁盘都保持正常。今天有一次中断几个小时,需要重新启动应用程序才能解决。尚未合并.axd文件或类似文件。在整个网站范围内实现网址重写。axd文件被排除在重写之外。为C#3.5构建的应用IIS7我正

c# - 为什么我的 MVC Controller 在提供图像时速度很慢

我有一个包含图像列表的MVCView,这些图像是动态的,因此它们来自Controller。为了简化这个Controller只有这个代码:[OutputCache(Duration=0,NoStore=true,Location=OutputCacheLocation.None)]publicActionResultRenderImage(intid){returnFile(@"C:\Users\Pictures\myimage.png","image/png");}我缓存东西并不是为了证明我的观点。我的View请求8张图像,所有图像都具有不同的ID,时间安排很糟糕:有时它对于某些图像(

c# - .NET MVC 身份验证 - 表单 + Windows 身份验证

我目前正在从事一个项目,该项目的要求给我带来了一些问题,我想知道处理它的最佳方法。本质上,我们希望内部用户能够访问MVC应用程序并通过AD进行身份验证,我们希望这与SSO非常相似,他们登录到他们的计算机并导航到该站点并进入。第二种类型的用户是我们的AD中不存在的外部合作伙伴,我们希望通过我们的SQLServer进行管理。对于这些用户,我们希望显示登录页面并进行表单例份验证。起初我的想法很简单,让IIS尝试使用Windows身份验证进行身份验证,如果失败(401),则重定向到登录页面。我目前没有测试这个的环境,但根据我在IIS7中的理解,它并不是那么简单,需要一点点“黑客”才能完成。我需

c# - Visual Studio 2010 不允许我调试我的代码

所以,这个有趣的问题在过去的几个小时里一直困扰着我。VisualStudio2010Ultimate不再附加调试器并让我调试我的代码。如果我使用内置的开发服务器,那么一切正常。如果我切换到使用本地IISWeb服务器(http://localhost/),那么它所做的一切都会附加到w3wp.exe,但不会为任何内容加载DLL或PDB。我可以转到“调试”>“Windows”>“模块”,实际上该窗口中没有加载任何内容。相反,当使用内置开发服务器时,“模块”窗口会显示所有DLL并显示我的DLL的符号已加载。显然有些不对劲。VS安装完全是骨头。在IIS中,我的网站配置了ASP.NET2.0(因为

c# - 检测 ASP.NET 应用程序何时回收

我试图检测ASP.NET应用程序何时由于web.config文件被修改或IIS应用程序池被手动回收而被回收。最初我认为ASP.NET的Application_End方法会起作用,并尝试了以下方法:protectedvoidApplication_End(objectsender,EventArgse){File.AppendAllText("log.txt",DateTime.Now+"\n");}该文件是在第一次更改web.config文件时创建的,但后续更改不会触发该事件。同样,在IIS中进行测试时,第一个手动应用程序池回收创建了文件,但后来的没有创建文件-就好像Applicati

c# - 仅在服务器上使用 mvc webgrid 间歇性接收失败

我在整个应用程序中广泛使用System.Web.Helpers.WebGrid,在大多数情况下它很好,实际上在本地运行它总是很好,或者在服务器上使用自SSL也很好。所以我不知道问题是否真的出在IIS或防火墙上,或者实际的网格上,或者我需要做些什么来修复它。在所有浏览器上,虽然结果略有不同,但WebGrid上连续的ajax排序和分页最终会导致它挂起,当我检查Fiddler中的响应时,我得到[Fiddler]ReadResponse()failed:Theserverdidnotreturnaresponseforthisrequest.如果我将url直接复制并粘贴到浏览器中,它将加载,但

c# - RoleEnvironment.GetConfigurationSettingValue 是否每次都从 cfg 文件中读取?

Azure角色设置非常有用,因为它允许您在IIS运行时即时更改值。但问题是,如果你有很多用户,并且如果它每次都从文件中读取配置值,那么最好不要将它放在静态变量中使用它。下一个问题,如果你把它放在一个静态变量中,那么你每次更改它时都必须重新设置IIS。我做了一些研究,在stackoverflow上发现了类似的问题,它告诉我只有第一次读取文件中的conf,然后将其存储在缓存中。但是回答的那个问题是关于ConfigurationManager的,我的是关于Azure的RoleManager。这是在azure上获取当前设置的行:RoleEnvironment.GetConfigurationS

c# - 从 C# 代码获取 IIS 中的请求数

我希望在C#中以编程方式获取IIS当前已排队的请求数。我还将寻求获得CPU使用率......谁能指出我正确的方向? 最佳答案 您需要查看系统性能计数器的读取信息,根据您要查找的内容,您可以使用许多计数器。这MSDNarticle显示所有IIS6性能计数器,您应该可以找到一个类似的IIS7性能计数器。对于CPU使用率,您也可以通过几种方法来解决这个问题。取决于您是想要总CPU使用率还是每个进程的CPU使用率。还有,这里是atutorial从进程计数器读取。 关于c#-从C#代码获取IIS中