Tag: C#的

如何为C#MVC4 WebAPI应用程序全局logging所有exception?

背景 我正在开发一个客户端的API服务层,我已经被要求捕捉并logging所有错误的全球。 所以,虽然类似未知端点(或动作)的东西很容易通过使用ELMAH或向Global.asax添加如下内容来处理: protected void Application_Error() { Exception unhandledException = Server.GetLastError(); //do more stuff } 。 。 。与路由无关的未处理错误不会被logging。 例如: public class ReportController : ApiController { public int test() { var foo = Convert.ToInt32("a");//Will throw error but isn't logged!! return foo; } } 我也尝试通过注册这个filter来全局设置[HandleError]属性: filters.Add(new HandleErrorAttribute()); 但是,这也不logging所有的错误。 问题/疑问 如何拦截上面调用/test生成的错误,以便我可以logging它们? 看起来这个答案应该是显而易见的,但是我已经尝试了所有我能想到的东西。 理想情况下,我想添加一些东西到错误logging,如请求用户的IP地址,date,时间等等。 当遇到错误时,我也希望能够自动发送电子邮件给支持人员。 所有这一切我都可以做,只要我能拦截这些错误发生时! 解决! 感谢达林·季米特洛夫(Darin Dimitrov),我接受了他的回答,我明白了这一点。 […]

抛出函数签名中的关键字

为什么在函数签名中使用C ++ throw关键字被认为是不好的做法是什么技术原因? bool some_func() throw(myExc) { … if (problem_occurred) { throw myExc("problem occurred"); } … }

为什么C ++库和框架从不使用智能指针?

我在几篇文章中读到几乎永远不会使用原始指针。 相反,他们应该总是包装在智能指针内,无论是范围还是共享指针。 不过,我注意到像Qt,wxWidgets这样的框架和Boost这样的库不会返回也不会期望智能指针,就好像它们根本不使用它们一样。 相反,他们返回或期待原始指针。 这有什么理由吗? 当我编写公共API时,我应该远离智能指针吗?为什么? 只是想知道为什么在许多重大项目似乎避免使用智能指针。

.NET中的WebClient和HTTPWebRequest类有什么区别?

WebClient和.NET中的HttpWebRequest类有什么不同? 他们都做了非常相似的事情。 实际上,为什么不把它们合并到一个类中(太多的方法/variables等可能是其中一个原因,但是.NET中有其他类违反了这个规则)。 谢谢。

Linq到XML Descendants和Elements的区别是什么?

我在VS智能感知中遇到了这两个关键字。 我试图搜寻他们之间的差异,没有得到明确的答案。 其中哪一个在中小型XML文件上具有最佳性能。 谢谢

HttpContent.ReadAsAsync在哪里?

我使用新的HttpClient对象(作为新的Web API的一部分)在网上看到大量的例子,应该有HttpContent.ReadAsAsync<T>方法。 但是, MSDN不提这个方法,IntelliSense也没有find它。 它到底在哪里,我该如何解决它?

如何将parameter passing给Activator.CreateInstance <T>()

我想创build一个我在一个generics方法中指定的types的实例。 这种types有一些重载的构造函数。 我想能够传递参数给构造函数,但是 Activator.CreateInstance<T>() 没有看到有这个作为一个选项。 还有另一种方法吗?

在C#中使用FindTimeZoneById()的时区ID列表?

有人可以请我指向所有的TimeZoneInfo.FindTimeZoneById()预计在TimeZoneInfo.FindTimeZoneById()引用的完整列表? 我找不到任何地方的列表,我已经通过.NET文档查看。

如何轻松初始化元组列表?

我喜欢元组 它们允许您快速将相关信息分组在一起,而无需为其编写结构或类。 这在重构非常本地化的代码时非常有用。 初始化它们的列表似乎有点多余。 var tupleList = new List<Tuple<int, string>> { Tuple.Create( 1, "cow" ), Tuple.Create( 5, "chickens" ), Tuple.Create( 1, "airplane" ) }; 没有更好的方法吗? 我会喜欢字典初始值设定项的解决scheme。 Dictionary<int, string> students = new Dictionary<int, string>() { { 111, "bleh" }, { 112, "bloeh" }, { 113, "blah" } }; 我们不能使用类似的语法吗?

使用NuGet程序包pipe理器控制台时无法访问源代码

我们正在将我们的软件包pipe理从手动更新文件移动到NuGet。 我正在尝试安装旧版本的软件包以匹配我们在源代码控制中已有的版本。 没有办法从UI做到这一点,所以我使用命令行来获得正确的版本。 出于某种原因, Install-Package不断告诉我,nuget库是无法访问的。 nuget.org [ https://www.nuget.org/api/v2/]的源代码无法访问。 回落到NuGet本地caching 这只发生在我们的解决scheme之一。 如果我创build一个新的解决scheme或使用另一个在同一个存储库中,软件包将按预期方式安装。 我甚至可以在虚拟解决scheme中安装软件包以填充本地caching,然后将其成功安装到故障解决scheme中。 我试图从NuGet控制台的url上Invoke-WebRequest ,我得到一个HTTP 200。 什么可以导致这个? 有没有办法在每个解决scheme/项目的基础上覆盖软件包源?