Tag: .net

HttpClient.GetAsync(…)在使用await / async时永远不会返回

编辑: 这个问题看起来可能是相同的问题,但没有回应… 编辑:在测试案例5中,任务似乎卡在WaitingForActivation状态。 我遇到一些奇怪的行为在.NET 4.5中使用System.Net.Http.HttpClient – “等待”(例如) httpClient.GetAsync(…)调用的结果将永远不会返回。 只有在使用新的异步/等待语言功能和任务API时,才会出现这种情况 – 只使用延续时,代码似乎总能工作。 下面是一些重现问题的代码 – 在Visual Studio 11中将其放入一个新的“MVC 4 WebApi项目”中,以显示以下GET端点: /api/test1 /api/test2 /api/test3 /api/test4 /api/test5 <— never completes /api/test6 这里的每个端点都返回与从未完成的/api/test5相同的数据(来自stackoverflow.com的响应头)。 我在HttpClient类中遇到了一个错误,或者我以某种方式滥用API? 代码重现: public class BaseApiController : ApiController { /// <summary> /// Retrieves data using continuations /// </summary> protected Task<string> Continuations_GetSomeDataAsync() { var httpClient = new HttpClient(); var […]

哪个.NET依赖注入框架值得研究?

哪个C#/ .Net依赖注入框架值得研究? 你怎么能说他们的复杂性和速度。

用更好的浏览器代替.NET WebBrowser控件,比如Chrome?

是否有任何相对简单的方法来将现代浏览器插入到.NET应用程序中? 据我所知, WebBrowser控件是IE的包装器 ,除了它看起来是一个非常旧的IE版本,这不会是一个问题,所有这一切都需要在CSS拧紧,潜在的安全性风险(如果渲染引擎没有打补丁,我真的可以期望缓冲区溢出问题得到解决吗?)和其他问题。 我正在使用Visual Studio C# (快速版 – 这有什么区别?) 我想在我的应用程序中集成一个好的网页浏览器。 在某些情况下,我只是用它来处理用户注册过程,与我的一些网站的功能和其他顺序的接口,但我有另一个应用程序,需要更多的错误控制。 我需要: 一个浏览器,可以集成在我的应用程序窗口(而不是一个单独的窗口) 很好的支持CSS,JS和其他网络技术,与任何现代浏览器一样 基本的浏览器功能,如“导航”,“后退”,“重新加载”… 自由访问页面代码和输出。 我在考虑Chrome,因为它属于BSD许可证,但是对于最近版本的IE,我会感到满意。 尽可能地,我想保持简单。 最好的情况是,如果可以修补现有的WebBrowser控件,这个控件已经达到了我所需要的约70%,但我认为这是不可能的。 我已经找到了一个Mozilla的ActiveX控件( http://www.iol.ie/~locka/mozilla/control.htm ),但看起来它是一个旧版本,所以它不一定是一个改进。 我很乐意提供建议

如何将整个字符串与正则表达式匹配?

我需要一个正则表达式,它只会查找整个字符串与我的查询匹配的匹配项。 例如,如果我搜索名称为“红色十月”的电影,我只想匹配确切的标题(不区分大小写),但不匹配“红色十月寻宝”这样的标题。 不太确定我知道如何做到这一点。 有人知道吗? 谢谢!

如何使WinForms应用程序全屏显示

我有一个WinForms应用程序,我正在尝试使全屏(有点像VS在全屏模式下)。 目前,我将FormBorderStyle设置为None ,将WindowState设置为Maximized ,这给了我更多的空间,但是如果它是可见的,它不覆盖任务栏。 我还需要做些什么才能使用这个空间呢? 对于奖励积分,有什么我可以做我的MenuStrip自动隐藏放弃这个空间以及?

如何追踪log4net的问题

我一直使用log4net,但是我从来没有想过的一件事是如何知道里面发生了什么。 例如,我的项目中有一个控制台appender和一个数据库appender。 我对数据库和代码进行了一些更改,现在数据库appender不再工作了。 我会弄清楚为什么最终,但是如果我能看到log4net里发生了什么,这将会有很大的帮助。 是否log4net生成任何类型的输出,我可以查看尝试确定我的问题的来源?

最有效的方法来连接字符串?

连接字符串的最有效的方法是什么?

温莎 – 从容器中拉出瞬态物体

我怎样才能从容器中取出瞬态的物体呢? 我是否需要在容器中注册它们并注入需要的类的构造函数? 将所有内容注入构造函数并不好。 也只是对于一个类,我不想创建一个TypedFactory ,并将工厂注入需要的类。 另一个想到我的是在需要的基础上“新”起来的。 但我也注入Logger组件(通过属性)到我所有的类。 所以,如果我新建它们,我将不得不在这些类中手动实例化Logger 。 我怎样才能继续使用容器为我所有的课程? 记录器注入:除非存在继承链(在这种情况下,只有基类具有此属性,并且所有派生类都使用该属性),否则大多数类都定义了Logger属性。 当这些通过Windsor容器实例化时,他们会得到我注入ILogger实现。 //Install QueueMonitor as Singleton Container.Register(Component.For<QueueMonitor>().LifestyleSingleton()); //Install DataProcessor as Trnsient Container.Register(Component.For<DataProcessor>().LifestyleTransient()); Container.Register(Component.For<Data>().LifestyleScoped()); public class QueueMonitor { private dataProcessor; public ILogger Logger { get; set; } public void OnDataReceived(Data data) { //pull the dataProcessor from factory dataProcessor.ProcessData(data); } } public class DataProcessor { public ILogger […]

传递方法作为参数使用C#

我有几个方法都具有相同的签名(参数和返回值),但不同的名称和方法的内部是不同的。 我想传递方法的名称来运行另一个方法,将调用传入的方法。 public int Method1(string) { … do something return myInt; } public int Method2(string) { … do something different return myInt; } public bool RunTheMethod([Method Name passed in here] myMethodName) { … do stuff int i = myMethodName("My String"); … do more stuff return true; } public bool Test() { return RunTheMethod(Method1); } 此代码不起作用,但这是我想要做的。 […]

CA2202,如何解决这种情况

任何人都可以告诉我如何从下面的代码中删除所有的CA2202警告? public static byte[] Encrypt(string data, byte[] key, byte[] iv) { using(MemoryStream memoryStream = new MemoryStream()) { using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider()) { using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write)) { using(StreamWriter streamWriter = new StreamWriter(cryptoStream)) { streamWriter.Write(data); } } } return memoryStream.ToArray(); } } 警告7 CA2202:Microsoft.Usage:Object'cryptoStream'可以在方法CryptoServices.Encrypt(string,byte [],byte [])'中多次使用。 为了避免产生System.ObjectDisposedException,你不应该在一个对象上多次调用Dispose:Lines:34 警告8 CA2202:Microsoft.Usage:Object'memoryStream'可以在方法CryptoServices.Encrypt(string,byte […]