我正在使用Moq创建一个Mock<HttpResponseBase>测试FileResult我正在为我的MVC2应用程序创建.
在WriteFile(HttpResponseBase response)方法中FileResult,我在最后有以下代码:
// Write the final output with specific encoding.
response.OutputStream.Write(output, 0, output.Length);
response.AppendHeader("Content-Encoding", encoding);
Run Code Online (Sandbox Code Playgroud)
它将使用utf-8或gzip取决于请求Accept-Encoding标头的编码.
那么在我的测试中,我设置了我的Mock<HttpResponseBase>喜欢:
var mockResponse = new Mock<HttpResponseBase>();
mockResponse.Setup(r => r.OutputStream).Returns(new MemoryStream());
mockResponse.Setup(r => r.Headers).Returns(new NameValueCollection());
Run Code Online (Sandbox Code Playgroud)
但是当我实际检查标头已设置时,Content-Encoding 总是返回null:
var response = mockResponse.Object;
Assert.AreEqual("utf-8", response.Headers["Content-Encoding"]);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,OutputStream获取写入它的数据,我可以声明它正在写入正确的值.
奇怪的是,当我实际调试FileResultWeb项目时,标头被正确发送.
有没有人对此有所了解?如有必要,我可以提供更多代码.
我一直在做很多研究,以确定存储我正在开发的系统的密码的最佳实践.到目前为止,我已经决定使用带有RNG的SHA512哈希为每个密码生成一个盐(显然是针对Rainbow Tables等的最佳实践).
将密码存储在表中的两个单独字段中是否过于简单,无法确定数据库中的密码表示(有PasswordHash字段和PasswordSalt字段)?通过默默无闻看起来似乎是安全性,但我想将盐和密码哈希存储在一个连接在一起的字段中.
这会"帮助"吗?
是否可以ViewContext从类库中访问?我需要获取当前View和Controller的动作名称.我在我的类库项目中添加了两个System.Web.dll,System.Web.Mvc但仍无法找到获得我需要的方法.虽然我可以使用访问当前上下文System.Web.HttpContext.Current.
我正在尝试访问部分视图中的视图中定义的 PageData。如果我将 PageData 作为模型传递给部分视图,我就可以访问它。我不喜欢这种方法,因为它不是视图的模型。部分视图将有自己的 PageData 实例。那么有没有办法访问Parent的ViewData呢?这是示例代码...查看代码
@{
ViewBag.Title = "Home Page";
PageData["MyName"] = "Sathi";
}
<h2>@ViewBag.Message</h2>
<h3>@WebPageContext.Current.Page.PageData.Count()</h3>
<h3>@PageData["MyName"]</h3>
<h3>@WebPageContext.Current.Page.PageData.Count()</h3>
@{ Html.RenderPartial("_Partial"); }
Parent view ends here
Run Code Online (Sandbox Code Playgroud)
部分查看代码
This is a partial view
<h3>@PageData["MyName"]</h3><-- Empty
<h3>@WebPageContext.Current.Page.PageData.Count()</h3>
Run Code Online (Sandbox Code Playgroud) 我有一个简单的架构,如下所示:
这个想法是有用户,部门和流程.对于每个部门,用户可以"加注"多个流程以"标记"它们(因此部门/用户对可以有许多流程).
理想情况下,我想使用以下类:
public class User
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
}
public class Department
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IDictionary<User, IList<StarredFlow>> StarredFlows { get; protected set; }
public Department()
{
this.UserStarredFlows = new Dictionary<User, IList<StarredFlow>>();
}
}
public class Flow
{
public virtual int Id { get; protected set; }
public …Run Code Online (Sandbox Code Playgroud) 我需要找到长宽比恰好(或在0.001以内)某个值的最小尺寸.这样做有什么快速的数学技巧或框架技巧吗?
这是我运行的当前坏主意的伪代码O(n^2):
epsilon = 0.001;
from x = 1 to MAX_X
{
from y = 1 to MAX_Y
{
if(Abs(x / y - aspectRatio) <= epsilon)
{
return new Size(x, y);
}
}
}
return Size.Empty;
Run Code Online (Sandbox Code Playgroud) 在查看System.Data.Entity.dllfor .NET 4.0时,没有反编译方法.我只看到方法存根.我尝试重新安装反射器,但它仍然无法正常工作.我能够很好地反编译其他.NET程序集.
我有List<T> data和Predicate<T> condition.
我应该data根据condition结果使用什么方法来清除?
选项1:
var del = data.Where(i => condition);
data.RemoveAll(i => del.Contains(i));
Run Code Online (Sandbox Code Playgroud)选项2:
var del = data.Where(i => condition);
for (int i = 0; i < del.Count; i++)
data.Remove(del[i]);
Run Code Online (Sandbox Code Playgroud)选项3:
var del = data.Where(i => condition);
foreach (var i in del)
data.Remove(i);
Run Code Online (Sandbox Code Playgroud)选项4:
data = data.Where(i => !condition);
Run Code Online (Sandbox Code Playgroud)任何其他?
我正在使用FluentValidation 2来验证某些实体.我想创建一个IValidationService我可以传递到其他服务,以允许他们执行验证.我想像这样揭露它:
public interface IValidationEngine
{
IEnumerable<ValidationError> Validate<T>(T entity);
}
Run Code Online (Sandbox Code Playgroud)
哪个ValidationError类封装了我的验证错误.理想情况下,我不想在我的某个服务(例如OrderValidator)中公开特定的验证器.我希望验证服务能够构建/找到正确的验证器.FV是否内置了用于查找特定类型的验证器(以及内部缓存)的内容?或者,我是否必须走这IValidatorFactory条路线,然后将每个验证器连接到我的IoC容器?
我一直在努力创建自己的IoC容器用于学习目的.在询问了几个关于它们的问题之后,我被证明创建一个"解决"对象的工厂是最好的解决方案(参见第三个解决方案).用户KrzysztofKoźmic表明Castle Windsor实际上可以为您实现这一点.
我整个上午都在阅读CW的来源.我知道当调用Resolve时,它会"返回界面".这个接口如何"拦截"调用(因为后面没有实现)并调用它自己的方法?
我知道这里有一些反思诡计,这真是太神奇了.我根本不是用户如何"拦截".我试着用git冒险从兔子洞里冒险,但我迷路了.如果有人能指出我正确的方向,那将非常感激.
另外 - 创建一个类型化的工厂是否会依赖于调用代码中的容器?在ASP.NET MVC术语中,这就是我所看到的.
编辑:发现Reflection.Emit ...这可能是什么用的?
EDIT2:我越来越关注这一点,自动创建工厂听起来越复杂.我可能最终只是坚持使用重复的代码.
c# reflection asp.net-mvc castle-windsor inversion-of-control
我正在尝试创建一个存储库类,它具有一个基于"sort"参数对结果进行排序的方法.我需要将它作为参数传递,因为我试图非常严格,我的存储库不返回IQueryable并且只返回List.问题是我不知道如何制作它以满足以下要求:
这是否可能,或者存储库是否允许返回订购?存储库是否应该只能执行CRUD操作?也许返回IQueryable是最好的选择?
我在哪里可以下载.Net 4.0的服务包#1?
我的经理说在SP1发布之前使用它"不安全".这是什么意思 ?请指教.
c# ×8
.net ×5
asp.net-mvc ×4
.net-4.0 ×2
linq ×2
algorithm ×1
database ×1
list ×1
moq ×1
nhibernate ×1
passwords ×1
predicate ×1
razor ×1
reflection ×1
reflector ×1
security ×1
servicepacks ×1
unit-testing ×1