我们在我们的站点中使用MVC Bundling,CssRewriteUrlTransform确保图像URL在动态bundle css文件中工作.
但这只适用于不使用虚拟目录的情况,即
http://localhost/VirttualDir不行,但http://localhost/确实如此.这是因为CssRewriteUrlTransform在重写URL时,转换不会考虑虚拟文件夹.因此,如果图像真实路径是localhost/vdir/content/img/foo.png它将重写它localhost/content/img/foo.png是错误的
我有这个Repository方法
public IList<Message> ListMessagesBy(string text, IList<Tag> tags, int pageIndex, out int count, out int pageSize)
{
pageSize = 10;
var likeString = string.Format("%{0}%", text);
var query = session.QueryOver<Message>()
.Where(Restrictions.On<Message>(m => m.Text).IsLike(likeString) ||
Restrictions.On<Message>(m => m.Fullname).IsLike(likeString));
if (tags.Count > 0)
{
var tagIds = tags.Select(t => t.Id).ToList();
query
.JoinQueryOver<Tag>(m => m.Tags)
.WhereRestrictionOn(t => t.Id).IsInG(tagIds);
}
count = 0;
if(pageIndex < 0)
{
count = query.ToRowCountQuery().FutureValue<int>().Value;
pageIndex = 0;
}
return query.OrderBy(m => m.Created).Desc.Skip(pageIndex * pageSize).Take(pageSize).List();
}
Run Code Online (Sandbox Code Playgroud)
您提供自由文本搜索字符串和标签列表.问题是,如果邮件有多个标签,则会列出重复的时间.我想要一个基于Message实体的独特结果.我看了看
Projections.Distinct
Run Code Online (Sandbox Code Playgroud)
但它需要一个属性列表来处理不同的问题.这条消息是我的实体根,大部分是在不提供所有实体属性的情况下获得此行为的方法吗?
提前谢谢,安德斯
这是一个简单的小部件模拟:
(function ($) {
$.widget("ui.myDummyWidget", {
options: {
},
_create: function () {
},
hide: function () {
this.element.hide();
},
_setOption: function (key, value) {
$.Widget.prototype._setOption.apply(this, arguments);
},
destroy: function () {
$.Widget.prototype.destroy.call(this);
}
});
} (jQuery));
Run Code Online (Sandbox Code Playgroud)
它只添加一个方法hide,您可以调用它来隐藏元素.如果从小部件内完成,则很容易
this.hide();
Run Code Online (Sandbox Code Playgroud)
但常见的情况是您希望从外部调用窗口小部件实例上的方法(Ajax更新或其他外部事件)
那么访问小部件实例的最佳方式是什么?一种方法是将元组件的引用添加到元素中,丑陋......
_create: function () {
this.element[0].widget = this;
},
Run Code Online (Sandbox Code Playgroud)
然后你可以从外面进行访问
this.dummy = $("#dummy").myDummyWidget();
this.dummy[0].widget.hide();
Run Code Online (Sandbox Code Playgroud) 我有这个ActionFilter
public class AppOfflineFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionDescriptor.ActionName != "AppOffLine" &&
filterContext.HttpContext.Request.UserHostName != "127.0.0.1")
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new { action = "AppOffLine", Controller = "Home" }));
}
}
}
Run Code Online (Sandbox Code Playgroud)
它从起始页面起作用,它不在一个区域下,它不能在一个区域工作,因为它将重定向到/ Area/Home/Appoffline而不是/ Home/AppOffline
可以修复吗?
还有一种方法可以确定哪个控制器/动作重定向到使用泛型和强类型代码?
我创建了一个MemoryCache在下面使用.NET的异步缓存.这是代码
public async Task<T> GetAsync(string key, Func<Task<T>> populator, TimeSpan expire, object parameters)
{
if(parameters != null)
key += JsonConvert.SerializeObject(parameters);
if(!_cache.Contains(key))
{
var data = await populator();
lock(_cache)
{
if(!_cache.Contains(key)) //Check again but locked this time
_cache.Add(key, data, DateTimeOffset.Now.Add(expire));
}
}
return (T)_cache.Get(key);
}
Run Code Online (Sandbox Code Playgroud)
我认为唯一的缺点是我需要在锁外等待,所以populator不是线程安全的,但是因为await不能驻留在锁内,我想这是最好的方法.我错过了任何陷阱吗?
更新:当antoher线程使缓存无效时,Esers应答的版本也是线程安全的
public async Task<T> GetAsync(string key, Func<Task<T>> populator, TimeSpan expire, object parameters)
{
if(parameters != null)
key += JsonConvert.SerializeObject(parameters);
var lazy = new Lazy<Task<T>>(populator, true);
_cache.AddOrGetExisting(key, lazy, DateTimeOffset.Now.Add(expire));
return ((Lazy<Task<T>>) _cache.Get(key)).Value;
}
Run Code Online (Sandbox Code Playgroud)
但它可能会更慢,因为它会创建永远不会执行的Lazy实例,并且它在完全线程安全模式下使用Lazy …
我正在使用Quartz.Net进行概念验证一个相当简单的调度任务,我唯一的要求是重新配置石英不需要重新启动服务
这是测试代码
var factory = new StdSchedulerFactory();
var scheduler = factory.GetScheduler();
scheduler.Start();
Run Code Online (Sandbox Code Playgroud)
app.config中的相关数据
<quartz>
<add key="quartz.scheduler.instanceName" value="QuartzScheduler" />
<!-- Configure Thread Pool -->
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="Normal" />
<!-- Configure Job Store -->
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.JobInitializationPlugin, Quartz" />
<add key="quartz.plugin.xml.fileNames" value="quartz.config" />
Run Code Online (Sandbox Code Playgroud)
我的工作配置文件
<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0"
overwrite-existing-jobs="true">
<job>
<job-detail>
<name>jobName1</name>
<group>jobGroup1</group>
<description>jobDesciption1</description>
<job-type>Jobs.MyJob, Jobs</job-type>
<volatile>false</volatile>
<durable>true</durable>
<recover>false</recover>
</job-detail>
<trigger>
<cron>
<name>cronName1</name>
<group>cronGroup1</group>
<description>CronTriggerDescription</description> …Run Code Online (Sandbox Code Playgroud) 有没有简单的方法将ImageSources添加到堆栈并从中创建视频?
在我的MVC3项目中,我已经在InRequestScope的基础上将我的内核设置为Ninject Entityframework上下文,这非常有效,但是我有一个后台运行器来执行一些工作流管理.
它每5分钟启动一个新线程,我将我的依赖项Ninject到这个线程中,如果我将范围更改为InThreadScipe,则会触发Dispose方法,但如果我将其更改回InRequestScope,则Dispose方法不会触发.
如果InRequestScope不可用,是否有退回InThreadScope的方法?
更新:刚刚得到一个关于这个问题的upvote,为什么不用一些额外的信息更新它.我认为Ninjects处理生命时间的方式有点过时了.其他IoC的子容器是Transient注册的对象,它们存放在整个子容器中,并在子容器处理时被丢弃.这是一种更简单的方法,例如Web API与上述方案之类的自定义工作程序相结合.
我使用lua接口在我的C#程序中获得lua支持,如果用户提交这样的代码,工作线程将冻结
while true do end
Run Code Online (Sandbox Code Playgroud)
我有办法检测无限循环是否正在运行,但我需要一种从Worker线程退出DoString方法的好方法.有任何想法吗?
编辑:@kikito,是的,我正在发现它.我遇到的问题是我无法找到一种杀死DoString方法的简洁方法,看起来Lua接口主类(Lua)有一些静态依赖,因为如果我lua.Close();在我的实例上执行它会中止DoString方法,但是下次我实例一个lua类时,new Lua();它会崩溃说一些保护性记忆
编辑:显示我的.Close代码的功能分支 https://github.com/AndersMalmgren/FreePIE/tree/detect-and-recover-infite-lua-loop
当我尝试收获的文件夹中有x64 dll时,我收到此错误
heat.exe:错误HEAT5150:无法从预期为SelfReg DLL的文件中收集数据:C:\ Users\ama\Documents\Projekt\FreePIE\Output\sixense_fak e_x64.dll.如果此文件不支持SelfReg,您可以忽略此警告.另外,这个错误细节可能有助于诊断失败:无法找到文件:C:\ Users\ama\Documents\Projekt\FreePIE\Output\sixense_fake_x64.dll,e rror:193 [C:\ Users\ama\Documents\Projekt\FreePIE\BuildTools\build_installer.xm l]
如何配置热量以支持x64 dll或只是添加它们而不进行任何检查?它只是一个静态的c库,我的程序甚至没有使用它,如果用户想要伪造这个SDK,他会对安装文件夹中的sixense_fake_x64.dll应对依赖它的第三方程序.
如果有任何帮助,请编辑源代码
c# ×4
async-await ×1
heat ×1
imagesource ×1
jquery ×1
lua ×1
nhibernate ×1
ninject ×1
quartz.net ×1
queryover ×1
scope ×1
wix ×1
wpf ×1