草庐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# - 自托管 ASP.NET Web API 和自托管 SignalR 一起 Windows 服务应用程序

我想构建一个Windows服务,通过自托管ASP.NETWebAPI提供一些服务。另外,我想通过自托管SignalR通知客户一些变化。我认为ASP.NETSignalR将是通知中心的完美解决方案。当我同时运行这两项服务时,它们无法协同工作。如果我删除SignalR,自托管API将开始完美运行。反之亦然:删除Windows服务,SignalR将完美运行。我不确定我的问题是什么,是否可以同时为asp.netWebAPI和SignalR自托管Windows服务?我在相同和不同的端口上都尝试过,但它不起作用。另一个问题,是否可以将两者都放在同一个端口上?我安装的包:Microsoft.AspN

c# - 托管在 Windows 服务中的 WCF 服务运行速度比控制台应用程序慢 10 倍

我有一个C#库可以进行一些文件处理。我创建了一个控制台和桌面应用程序,它使用该库并在大约1分钟内处理一个256mb的文件。然后,我创建了一个托管在Windows服务中的WCF服务,该服务使用相同的文件处理库,但在从网站调用时处理相同的256mb文件需要10倍的时间。Windows服务在具有管理员权限的域帐户下运行。调用WCF服务的开销非常快,但LoadFile方法花费的时间要长得多。我尝试通过在启动期间增加进程优先级Process.GetCurrentProcess().PriorityClass=ProcessPriorityClass.High;没有用。我已经在Win764位桌面系

c# - 处理内存泄漏的非托管 dll

我有一个c#应用程序,它依赖于第三方非托管程序集来访问某些硬件。非托管代码存在内存泄漏,每次访问后内存消耗将增加~10mb。问题是已知的;没有错误修正可用。有没有一种方法可以让我在不定期重启的情况下继续使用这个程序集?我尝试创建一个单独的AppDomain,通过appDomain.CreateInstanceAndUnwrap()将有问题的代码加载到该AppDomain中,然后通过AppDomain.Unload()卸载该域.然而,这显然不会释放该域使用的非托管内存,只会释放托管内存。我还可以将应用程序拆分为两个独立的部分,然后仅重新启动具有非托管dll的部分。然而,这将意味着重大的重

c# - 优化托管到 native 调用

如何加快从托管代码调用native方法?我正在编写一个程序,该程序需要能够管理任意大小的对象列表并从中高速检索信息,并将其输入脚本。脚本是一些编译后的C#代码。我正在编写从C++(native)DLL/SO/等到C#(.Net或Mono)管理层的基本接口(interface)层。现在,我一直在做一些测试,我发现平均而言,从托管代码调用native方法比在托管代码中调用native方法慢100倍(所有native和所有托管都一样快,供引用)。我使用的语法是:[DllImport("test.dll")]externstaticpublicStringtest_method(Stringv

c# - NuGet 发布的 github 托管项目的目录结构

对于一个github托管的开源C#项目,它也可以通过NuGet获得,应该如何组织源代码?具体来说:.nuspec文件应该在github存储库中吗?.nuspec文件是否应与.csproj文件位于同一文件夹中?既然生成了NuGet包树(/lib、/content东西),它应该在git中吗?我的想法是NuGet部分与github托管是分开的,因为在项目源中可用但.nuspec不可用,因为NuGet中的发布本身不是开源操作。None不希望每个分支都构建和发布一个新NuGet程序包,这样开源Foo程序包最终在画廊中作为“Rick'sFoo”与“John'sFoo”与“Alice'sFoo”等等

c# - 如何在 IE 保护模式下访问 AppData(从托管 BHO)

我正在用C#编写IE扩展(BHO)。当在保护模式下运行时(IE的新UAC兼容模式强制所有扩展以低完整性运行),它会失败,因为它无法访问appdata文件夹中的user.config。是否有某种方法可以标记文件可由完整性较低的进程读取?如果做不到这一点,是否有某种方法可以强制BHO以中等完整性运行?如果做不到这一点,是否有某种方法可以在指向AppData中的中等完整性文件的低完整性文件夹中创建低完整性符号链接(symboliclink)?如果做不到这一点,是否有某种方法可以强制应用程序使用LocalLow文件夹中的user.config文件?如何在.net中获取此文件夹的路径(它未在En

c# - 在 IIS 7 托管环境 : ASP. NET 中获取 Url 路由让我头疼

我正在尝试使用System.Web.Routing实现ASP.NETURL路由。这似乎在我的本地主机上工作正常但是当我上线时我收到IIS7的404错误(找不到文件)。仅供引用,托管使用WindowsServer2008IIS7。我认为这在处理路由机制方面有所不同。但我无法弄清楚到底发生了什么。以下是我到目前为止为使其正常工作所做的设置和更改,并为我自己提供一些荣誉,它在本地工作得非常好。Web.Config设置然后我有一个具有以下标记的system.webserver部分然后在Application_Start部分我定义了一个路由如下:voidApplication_Start(obj

c# - 在传递给非托管代码之前固定一个可更新的结构?

我使用一些旧的API,需要将结构的指针传递给异步运行的非托管代码。换句话说,在我将结构指针传递给非托管代码后,非托管代码复制该指针并立即返回。非托管代码可以在另一个线程的后台访问该结构。我无法控制在另一个线程中运行的非托管代码,也无法控制线程本身。固定的{}语句不能用于固定,因为它不是为异步非托管固定而设计的。GCHandle只能固定引用,因此必须对结构进行装箱才能使用GCHandle。我试过了,它有效。它的主要问题是您无法从托管代码更新结构。要更新结构,首先我们需要将其拆箱,然后更新,然后再次装箱,但是......哎呀......再次装箱?!?这意味着内存中的前一个指针仍然指向旧的非