小编Gie*_*ius的帖子

System.Runtime.Caching.MemoryCache vs HttpRuntime.Cache - 有什么区别吗?

我想知道MemoryCache和之间是否有任何区别HttpRuntime.Cache,哪一个在ASP.NET MVC项目中是首选的?

据我所知,两者都是线程安全的,API从一开始就或多或少都是一样的,所以在使用哪个时有什么区别?

c# asp.net-mvc caching c#-4.0

83
推荐指数
2
解决办法
4万
查看次数

将记录器作为单身人员是一种好习惯吗?

我有习惯将记录器传递给构造函数,如:

public class OrderService : IOrderService {
     public OrderService(ILogger logger) {
     }
}
Run Code Online (Sandbox Code Playgroud)

但这很烦人,所以我已经使用了它一段时间了:

private ILogger logger = NullLogger.Instance;
public ILogger Logger
{
    get { return logger; }
    set { logger = value; }
}
Run Code Online (Sandbox Code Playgroud)

这也很烦人 - 它不干,我需要在每个班级重复这个.我可以使用基类,但是再次 - 我正在使用Form类,所以需要FormBase等等.所以我认为,暴露ILogger的单例会有什么不利因素,所以我们知道在哪里得到logger:

    Infrastructure.Logger.Info("blabla");
Run Code Online (Sandbox Code Playgroud)

更新:正如Merlyn正确注意到的那样,我应该提一下,在第一和第二个例子中,我正在使用DI.

.net c# logging singleton dependency-injection

75
推荐指数
5
解决办法
3万
查看次数

Resharper 6默认创建自动属性

当我编写代码并需要新属性时,我只需编写已存在的属性名称并从菜单中选择操作: 在resharper中创建新属性

问题是,它生成如下代码:

 protected int SomeNewProperty
    {
        get { throw new System.NotImplementedException(); }
        set { throw new System.NotImplementedException(); }
    }
Run Code Online (Sandbox Code Playgroud)

所以我需要去那里并手动调整它(实际上我更喜欢从菜单中选择Create field并将其更改为auto属性).无论如何,我想,可能有一种方法可以改变"创建属性"的默认行为,它会立即创建自动属性吗?

更新

在Resharper 8中,可以使用自动属性,默认情况下可以设置!

Resharper 8选项屏幕

c# resharper

25
推荐指数
3
解决办法
5362
查看次数

linq group by contiguous blocks

假设我有以下数据:

时间状态
10:00 On
11:00 Off
12:00 Off
13:00 Off
14:00 Off
15:00 On
16:00 On

我如何使用Linq将其分组

[开,[10:00]],[关,[11:00,12:00,13:00,14:00]],[开,[15:00,16:00]]

c# linq

13
推荐指数
2
解决办法
2892
查看次数

固定地址在.NET中占用

支持FIPS的OpenSSL有一个限制 - 它必须libeay32.dll在固定地址加载,如果在任何其他地址加载,它将无法进行初始化检查,因此不能在FIPS模式下使用.

喜欢-所以我们根据微软的建议,并在某些机器上,从时间地址到时间由各种其他图书馆占领选择地址MSVCR120_CLR0400.dllmscorlib.ni.dll或者clr.dll,你明白了吧.

有没有办法检查是否采取了一些固定的地址+长度,并要求操作系统为我释放那部分内存,比如将这些dll转换为其他内存部分或类似的东西?

更新:

我从使用ListDLL的20个设备中收集了信息,并且有一些模式在哪里加载,但它远没有明确定义.所以我运行了一些数学,找到了最大的差距,在我拥有的20个日志中没有加载任何内容,将libeay32基地址更改为该差距中的某个位置(间隙比dll大6倍,所以我选择了〜它的中间仍然在几次尝试应用程序设法在libeay32之前加载一些东西(具体 - clrjit.dll,它的基地址为0x10000000,我认为是默认的),虽然在应用程序中我尝试加载libeay32尽快地.

.net c# c++ windows dll

13
推荐指数
1
解决办法
500
查看次数

为什么Git跟踪子目录中没有变化?

我已经创建了git存储库,添加了代码并将其推送到GitHub.

然后在本地,我编辑了文件Eila.Analyser/Program.cs,在第一次提交时添加到GitHub,保存并git status说没有变化.

好吧,我认为,一定搞砸了,git reset --hard HEAD并且据我所知,应该还原所有内容,但我的文件不会被还原.

所以我觉得我做错了什么.我编辑根文件夹中的文件,git status- 显示有更改,工作为可疑,因此它适用于根文件夹中的文件,但不适用于子文件夹中的文件.

我错过了一些明显的东西吗?

更新:证据,我正在编辑的文件真的被提交(git log --stat):

在此输入图像描述

如果有帮助,树图片:

在此输入图像描述

UPDATE2:好的,我以为我真的搞砸了,所以我删除了文件夹,我的解决方案在哪里,再次从gitHub克隆,我的本地代码仍然与gitHub中的现有代码不同,git status看不到任何更改,git log origin/master..HEAD什么都不给.

git github

10
推荐指数
5
解决办法
2万
查看次数

ASP.NET MVC3 - 您如何处理探测请求?

我们的网站上线了,当然,我们开始接收大量的探测请求,比如

'/blog/wp-login.php'
'/admin/admin.php'

等等.
所以问题是,你怎么跟他们做什么?

现在在每种情况下都会抛出404错误,elmah会发送有关它的电子邮件,但我认为最好至少忽略所有的php请求.

如何做到这一点,这样的请求将最低限度地加载服务器,可能有可能,asp.net管道将不参与此类请求?
或者重定向或返回空结果更好?

如果需要简单地添加IgnoreRoutes,可能有人有好的路由集,这会忽略大多数探测请求?

asp.net asp.net-mvc iis-7 asp.net-mvc-3

8
推荐指数
1
解决办法
715
查看次数

我应该在Service Stack服务模型中使用什么命名约定?

我们正考虑在下一个项目中使用ServiceStack; 在看示例时,我注意到,没有通用的命名约定. 例如:

entity:电影
请求:电影
回复:MovieResponse

所有操作都是如此. 现在这个例子:

实体:答案
请求:答案
响应:AnswerResult

完后还有:

实体:用户?
请求:GetUsers
响应:GetUsersResponse

(看到用动词盯着的班级名字有点奇怪)

所以,你可能想出了一些聪明的命名约定并希望分享.此外,服务堆栈上是否有更大的开源项目,我可以看看他们如何组织他们的服务模型?

c# servicestack

8
推荐指数
2
解决办法
1651
查看次数

在后台/异步任务中插入数据的最佳方法是什么?

我有一个非常快速/轻量级的mvc动作,这是经常请求的,我需要在重负载下保持最短的响应时间.

我需要做的是,不时根据条件向sql server插入少量数据(统计的日志唯一ID,~1-5%的查询).

我不需要插入数据用于响应,如果因为应用程序重启或smth而松开了部分数据,我将继续存在.

我想我可以在某种程度上排队插入并在后台进行,甚至可以进行某种缓冲 - 比如等待队列收集100个插入,然后在一次通过中制作它们.

我很确定,之前有人必须完成/看过这样的实现,没有必要重新发明轮子,所以如果有人指向正确的方向,我会感激不尽.

c# asp.net-mvc asynchronous entity-framework asp.net-mvc-3

7
推荐指数
2
解决办法
4155
查看次数

控制器操作被调用两次,IIS日志没有显示

我有奇怪的行为,无法在本地机器上复制,它开始让我疯狂.

貌似ASP.NET MVC正试图执行的行动,一些超时,失败没有任何异常,并通知Ajax客户端,然后尝试重新运行动作,AJAX客户端得到响应,而不是从原来的呼叫.

我有一个控制器动作:

 [ValidateAntiForgeryToken]
 [ClientErrorHandler]
 public virtual ActionResult PlaceOrder(CheckoutDto checkoutDto)
 {
     LoadDataFromDatabase();

     // this may take up to couple minutes
     var orderConfirmationData = PlaceOrderToExternalWebservice();

     SaveConfirmationData(orderConfirmationData);

     return View(Transform(orderConfirmationData))
 }
Run Code Online (Sandbox Code Playgroud)

我用jquery ajax调用它:

$.ajax({
                url: placeOrderActionUrl,
                type: "POST",
                async: true,
                dataType: "html",
                data: $('#checkoutForm').serialize(),                    
                success: function (data) {
                   // show confirmation data                       
                },
                error: function (request, status, error) {
                   // show error message
                }
            });
Run Code Online (Sandbox Code Playgroud)

对于小订单,它工作正常,但对于大订单,创建了两个订单,理由似乎是处理时间,订单越大,将其放置到外部Web服务所花费的时间就越多.

我检查了IIS日志,以确保客户端脚本没有两次调用操作 - 并且IIS日志只显示对特定操作的一次调用.

外部服务不会失败,事件日志/ sql日志中没有记录异常.

为了确保,ajax客户端得到的响应不是来自原始调用我已经做了一些锁定:

 [ValidateAntiForgeryToken]
 [ClientErrorHandler]
 public virtual ActionResult PlaceOrder(CheckoutDto checkoutDto)
 {
     try 
     { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc iis-7.5 asp.net-mvc-3

7
推荐指数
1
解决办法
2071
查看次数