在.Net 4.0中使用差的mans async / await构造实现异步超时

动机 C#5.0异步/等待构造非常棒,但遗憾的是,微软只展示了.NET 4.5和VS 2012的候选版本,这些技术将在我们的项目中得到广泛采用需要一些时间。 在Stephen Toub的异步方法,C#迭代器和任务中,我发现了一个可以很好地用于.NET 4.0的替代方法。 还有十几个其他实现甚至可以在.NET 2.0中使用该方法,尽管它们看起来很少过时且function较少。 例 所以现在我的.NET 4.0代码看起来像(注释部分显示它是如何在.NET 4.5中完成的): //private async Task ProcessMessageAsync() private IEnumerable ProcessMessageAsync() { //var udpReceiveResult = await udpClient.ReceiveAsync(); var task = Task .Factory .FromAsync(udpClient.BeginReceive, udpClient.EndReceive, null); yield return task; var udpReceiveResult = task.Result; //… blah blah blah if (message is BootstrapRequest) { var typedMessage = ((BootstrapRequest)(message)); // […]

SignalR 2.0.2创建PersistentConnection

我使用包管理器控制台将SignalR 2.0.2安装到我的MVC 4.5应用程序中。 我做了连接配置的标准示例。 namespace SignalRPersistent { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(“/echo”); } } } 问题是MapSignalR方法不接受字符串,而编译错误则说明了这一点 参数类型字符串不能分配给参数类型SignalRHubConfiguration。 但我可以看到一个接受字符串的重载方法,但它坚持不编译。 有什么问题?

如何在Asp.Net网站中包含另一个项目控制台应用程序exe?

我有两个项目:.Net 4.0 控制台应用程序和Asp.Net 4.0 网站 (它们在同一个解决方案中)。 现在我想在Web应用程序中包含控制台应用程序(它的.exe),因为当用户点击某个按钮时我需要在服务器上运行它。 现在我希望以每次重新编译解决方案时更新控制台应用程序的方式包含它,以便它保持最新。 那么…… 我如何在我的网络应用程序中包含我的.exe? PS。 引用不起作用:

在自托管WebApi中获取HttpRequest上下文

如何从自托管的MVC WebAPI访问查询字符串? 使用NRE调用以下失败,因为Current为空(aka。null) System.Web.HttpContext.Current.Request[“myQuery”] 我需要访问控制器外部的当前上下文,因为我想通过控制我的对象实例化。 DI。 例如。 container .RegisterType( new InjectionFactory( uc => new MyObject( System.Web.HttpContext.Current.Request[“myParam”]) //This failed. )); 由于上面的NRE,从ControllerApi代码内部调用container.Resolve()失败。

检测File.Move是否需要“复制 – >删除”或仅更改文件系统表中的位置

免责声明:我会马上承认,我对文件系统如何运作的细节有相当多的无知。 我一直在使用NTFS这么长时间,我可以根据我目睹的行为推断出正在发生的事情,以及我从互联网上的dorking所学到的一切 – 但是…… 我希望有一种方法可以检测是否将文件从“位置A”移动到“位置B”,操作是否需要等效的“File.Copy – > File.Delete”或者是否不会复制实际的文件数据,但只是更新“主文件表”中的位置等。 出于各种目的,我有时会移动大量的大文件。 我想在UI中报告进度。 我意识到当我调用File.Move并将文件从一个磁盘/分区上的某个位置移动到另一个磁盘/分区时,该函数将有效地在磁盘/分区之间“复制文件数据 – >删除”。 当遇到这种情况时,我希望能够检测到这种情况会发生,所以我可以使用我编写的代码来复制文件并在传输字节时提供详细的进度报告,这样我就可以经常更新UI中的进度条。 当它在同一个磁盘/分区上时,因为更新主文件表中的位置是如此之快,我只需在file.Move函数为我批量移动的每个文件完成时更新进度条。 使用.NET 4(C#),是否可以通过其他方式检测调用File.Move是否需要等效的“复制 – >删除”操作,或者只是更新文件表而不是复制文件数据? 编辑: 正如我在下面的评论中指出的那样,我认为可能做到这一点的可能性是检测给定的源文件位置和目标文件位置是否位于同一物理磁盘和分区上,如果是这样,这是否意味着我可以准确预测行为并决定要调用哪些函数 – 内置的File.Move函数用于“近即时”更新文件系统表,我相信在移动到相同磁盘/部件时会发生这种情况,或者我更详细的’报告进度每个’x’字节复制’自定义文件复制代码。 文件传输速度在我的程序运行的机器上会有很大差异,所以我希望能够在可能的情况下报告详细的进度/当前的传输速度。 注 – 程序可能正在使用网络UNC路径,这些路径可以使用具有相同根路径的不同物理磁盘,即:\\ somename \ shares \ workfolder \ project可能位于不同的物理磁盘上,然后是\\ somename \ shares \ workfoldder \ otherproject 。 因此,我需要一种方法来检测分区ID或物理磁盘ID,以查看同一磁盘/分区上的源文件夹和目标文件夹。 谢谢

Visual Studio添加与dll同名的可执行文件

在Visual Studio 2008中,我添加了WinScp.dll(在项目根目录中)作为参考,并立即有一个黄色图标。 在编译时: 找不到类型或命名空间名称’WinSCP’(您是否缺少using指令或程序集引用?) 已解决的文件具有错误的图像,没有元数据,或者无法访问。 无法加载文件或程序集“E:… \ winscp.exe”或其中一个依赖项。 该模块应该包含一个程序集清单。 经过一个小时的挫折,我发现如果我将WinSCP.exe作为项目文件(也在项目根目录中)删除,一切都编译得很好。 奇怪的!!!! 问题是我的输出目录中需要WinSCP.dll和WinSCP.exe。 我该怎么办? 编辑 :我知道有一些解决方法,如重命名文件或更改路径。 我最初改名为exe; 现在我重命名dll(感谢@Michael),因为它不需要我在我的代码中指定重命名的exe。 但是为什么首先出现问题呢? WinSCP.dll和WinSCP.exe是两个不同的文件。 这是Visual Studio中的错误,还是我不明白的dll / exe错综复杂?

在ASP.NET 4.5中将值设置为HiddenField

我在ASP.NET 4.5中为HiddenField设置值时遇到了一些问题。 从我所看到的,我已经尝试了以下没有任何运气: 在ASPX中: function SetHiddenField() { var vv = “HELLO WORLD”; document.getElementById(”).value = vv; } 在代码隐藏中: ScriptManager.RegisterStartupScript(this.Page, this.GetType(), “SetHiddenField”, “SetHiddenField();”, true); ScriptManager.RegisterStartupScript(this.Page, this.GetType(), “alert”, “alert(‘” + HiddenField.ClientID + “‘);”, true); 这会在ClientID中警告垃圾。 我尝试过的另一个解决方案如下。 在.ASPX中: function SetHiddenField() { var vv = “HELLO WORLD”; document.getElementById(‘HiddenField’).value = vv; } 这里的一个问题是.ValueOf在IntelliSense中不存在,只有.ValueOf 。 在代码隐藏中: ScriptManager.RegisterStartupScript(this.Page, this.GetType(), “SetHiddenField”, “SetHiddenField();”, true); ScriptManager.RegisterStartupScript(this.Page, […]

如何解析服务器上TFS文件夹的根路径和相对路径?

我已经创建了一个CodeActivity用于(自定义)构建定义。 此活动需要在执行其主要目的之前将位于服务器上的文件复制到“源目录”,“自定义文件夹”等位置或“删除目录”(等)。 我拥有的一些变量是有效路径,但其他变量显然是“相对路径”的占位符。 但是,我需要物理服务器路径,以便我可以来回复制有用的项目。 我需要的东西: 项目根的物理路径(见下图) 能够解析自定义文件夹的物理路径(参见下图) 能够从“相对路径”解析物理路径会很高兴 当然,我可以将项目名称传递给活动(用于解析目的)……因为那只是’俗气’。 我的问题是: 如何解析TFS项目根的物理路径? 一旦我解析了根,我可以依靠它来“构建”自定义文件夹的路径吗? 如何从“$ / Test / Drops”等相对路径获取服务器路径? 我知道如何获得的一些事实: 这些项目有些用处,而其他项目则不那么有用。 除非,我可以使用它们来获取物理服务器路径。 BuildDirectory: ‘F:\ BLD \构建\ 41个\测试\ Test_CustomActivity_CreateNuGetPackages’ BuildDetail.DropLocationRoot: ‘$ /测试/分出’ …希望我有物理路径 BuildDetail.BuildController.CustomAssemblyPath: ‘$ /测试/ BuildProcessTemplates’ …希望我有物理路径 SourcesDirectory: ‘F:\ BLD \构建\ 41 \测试\ Test_CustomActivity_CreateNuGetPackages \ src’ 中 Workspace.Folders: ‘F:\ BLD \构建\ 41 \测试\ Test_CustomActivity_CreateNuGetPackages \ SRC \测试\ […]

Sublime Text 2的控制台

我是C#的初学者,并尝试将Sublime Text用于我的编辑器。 但默认控制台似乎不支持“Console.ReadLine();” 我找不到任何可以输入输入的内容。 我搜索了一些插件,发现了这个REPL和CSharpreter。 但是,REPL似乎不支持C# 甚至当我尝试加载其他语言时,会弹出这样的错误消息。 什么是一个好的解决方案? 请帮忙!

ASPNET MVC – 为什么当该字段确实有值时,ModelState.IsValid为“需要x字段”?

我有这样的模型: public PurchaseOrder { [Required] [StringLength(15)] public virtual string OrderNumber {get;set;} // etc. } 当我从视图中提交订单时(使用$ .post,而不是输入type = submit),它会转到我的控制器类: public class PurchaseOrderController { public JsonResult Save(PurchaseOrder order) { // TryUpdateModel(order); // commented out since modelstate.isvalid remains false anyway if (ModelState.IsValid) { // its never valid } } } ModelState.IsValid始终返回false,并显示错误:“订单号字段是必需的。” 但是这个领域有一个价值(??为什么) 当它确实有价值时,为什么会说“价值是必需的”? 我错过了什么吗? 是因为$ .post而不是提交? 我能做什么? 这是调试器的样子: […]