对于Web应用程序,似乎处理会话的一种好方法是使用设置<property name="current_session_context_class">managed_web</property>,调用CurrentSessionContext.Bind/UnbindBegin/EndRequest.然后我可以sessionFactory.GetCurrentSession()在存储库类中使用.
这适用于所有页面请求.但我有后台工作人员在做东西并使用相同的存储库类来做事情.这些不在Web请求中运行,因此会话处理将不起作用.
有关如何解决这个问题的任何建议?
我有这个代码失败了:
internal class Program
{
private static void Main()
{
Mapper.CreateMap<SourceFoo, TargetFoo>();
Mapper.CreateMap<string, Stuff>()
.ForMember(dest => dest.Value, opt => opt.MapFrom(src => src))
.ForMember(dest => dest.IgnoreMe, opt => opt.Ignore());
var source = new SourceFoo
{
Stuff = "a",
Stuff2 = "a"
};
var target = new TargetFoo
{
Stuff = new Stuff(),
Stuff2 = new Stuff()
};
Mapper.Map(source, target);
Console.WriteLine(target.Stuff.Value);
Console.WriteLine(target.Stuff2.Value);
Console.ReadLine();
}
}
public class SourceFoo
{
public string Stuff { get; set; }
public string Stuff2 { get; set; …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
public class CodeContractSample
{
private readonly List<object> _items = new List<object>();
public IEnumerable<object> Query()
{
Contract.Ensures(Contract.Result<IEnumerable<object>>() != null);
//if (_items == null) throw new Exception();
return _items;
}
}
Run Code Online (Sandbox Code Playgroud)
CodeContracts给出了这个警告:
CodeContracts:确保未经证实:Contract.Result>()!= null
如果我取消注释中间行,它就会停止抱怨.但为什么一开始就抱怨?_items永远不应该为null ..?
当我转到另一个文件时,在代码中的类型名称上使用F12,它将在右侧的读取选项卡中打开该文件.如果我进一步导航,新文件将替换前一个文件.
在Visual Studio 2010中,它将为我要访问的每个文件打开一个新选项卡.我试图习惯新的行为,但我无法忍受.
如何关闭此功能?
在我的ASP.NET Core项目中,.json设置文件是主要文件下的组.但如果我改用.yml它,它就不会这样做.
在旧的csproj中,有很多XML用于这些事情.但现在找不到对其中的设置文件的任何引用.
这对.json文件有什么样的魔力?
csproj visual-studio .net-core asp.net-core visual-studio-2017
哪个更正确,"PriceList"还是"Pricelist"?
FxCop说:CA1702:Microsoft.Naming:类型名称'PriceList'中的复合词'PriceList'作为离散术语存在.如果您的用法是单字,请将其称为"价目表".
编辑:这是一个标题,开始/结束日期等对象.
我有一个页面(通用处理程序),我想在其上返回状态代码500到客户端,以指示出现问题.我是这样做的:
Response.StatusCode = 500;
Response.StatusDescription = "Internal Server Error";
Run Code Online (Sandbox Code Playgroud)
同时,我会发出一条友好的消息,告诉用户出现了问题.但是,我没有看到我的消息,而是获得了这样的默认IIS消息:
服务器错误500 - 内部服务器错误.您正在查找的资源存在问题,无法显示.
如果我进入IIS并删除500的错误页面,我会收到以下消息:
由于发生内部服务器错误,无法显示页面.
它在IIS6中按预期工作,但在IIS7中不能.我该怎么做才能让它在IIS7中运行?
有了温莎,我可以这样做:
var validators = container.ResolveAll<IEntityValidator<Product>>();
Run Code Online (Sandbox Code Playgroud)
但我不知道编译时的类型.我需要更像这样的代码:
var type = obj.GetType();
var validators = container.ResolveAll<IEntityValidator<...type...>>();
Run Code Online (Sandbox Code Playgroud)
显然,上面的代码并不接近正确的解决方案.我猜测需要一些完美的魔法.如果与温莎完全一致的话.是吗?
我搜索了这个并找到了: 如何检测类型是否是另一种通用类型
该解决方案的问题在于它期望实现具有相同的类型参数.我想要的是看一个类是否实现了一个带有任何类型参数的接口.
例:
public interface IMapper<in TSource, out TDestination>
{ ... }
public class StringMapper : IMapper<string, StringBuilder>
{ ... }
Console.WriteLine(typeof(IMapper<,>).IsAssignableFrom(typeof(StringMapper)));
Run Code Online (Sandbox Code Playgroud)
我希望这写真,但它写错了.如何检查类是否实现了具有泛型参数的接口?
如果我将此Startup放在ASP.NET Core应用程序中,文本将被加扰(Ã...Ã"Ã-).如果我在中间件中这样做,也会发生同样的事情.传递Encoding.UTF8到WriteAsync于事无补.
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Run(async context => { await context.Response.WriteAsync("ÅÄÖ"); });
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了?我该怎么做才能解决它?
c# ×7
.net ×5
asp.net-core ×2
reflection ×2
.net-core ×1
asp.net ×1
automapper ×1
csproj ×1
fxcop ×1
generics ×1
iis-7 ×1
naming ×1
nhibernate ×1