小编And*_*ers的帖子

CssRewriteUrlTransform有或没有虚拟目录

我们在我们的站点中使用MVC Bundling,CssRewriteUrlTransform确保图像URL在动态bundle css文件中工作.

但这只适用于不使用虚拟目录的情况,即

http://localhost/VirttualDir不行,但http://localhost/确实如此.这是因为CssRewriteUrlTransform在重写URL时,转换不会考虑虚拟文件夹.因此,如果图像真实路径是localhost/vdir/content/img/foo.png它将重写它localhost/content/img/foo.png是错误的

c# web-optimization asp.net-mvc-4 bundling-and-minification

61
推荐指数
3
解决办法
2万
查看次数

如何使用nHibernate和QueryOver API获得明显的结果?

我有这个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)

但它需要一个属性列表来处理不同的问题.这条消息是我的实体根,大部分是在不提供所有实体属性的情况下获得此行为的方法吗?

提前谢谢,安德斯

c# nhibernate queryover

48
推荐指数
3
解决办法
4万
查看次数

从外部窗口小部件访问窗口小部件

这是一个简单的小部件模拟:

(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)

jquery jquery-widgets

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

使用RedirectToRouteResult重定向不适用于其他区域

我有这个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

可以修复吗?

还有一种方法可以确定哪个控制器/动作重定向到使用泛型和强类型代码?

asp.net-mvc-3

19
推荐指数
2
解决办法
3万
查看次数

Async threadsafe从MemoryCache获取

我创建了一个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 …

c# thread-safety async-await

16
推荐指数
4
解决办法
7317
查看次数

在配置文件更改时,quartz.net可以重新配置作业吗?

我正在使用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)

quartz.net

11
推荐指数
1
解决办法
9103
查看次数

从ImageSource创建视频

有没有简单的方法将ImageSources添加到堆栈并从中创建视频?

wpf video-capture imagesource

11
推荐指数
2
解决办法
3343
查看次数

Ninject InRequestScope回退到InThreadScope

在我的MVC3项目中,我已经在InRequestScope的基础上将我的内核设置为Ninject Entityframework上下文,这非常有效,但是我有一个后台运行器来执行一些工作流管理.

它每5分钟启动一个新线程,我将我的依赖项Ninject到这个线程中,如果我将范围更改为InThreadScipe,则会触发Dispose方法,但如果我将其更改回InRequestScope,则Dispose方法不会触发.

如果InRequestScope不可用,是否有退回InThreadScope的方法?

更新:刚刚得到一个关于这个问题的upvote,为什么不用一些额外的信息更新它.我认为Ninjects处理生命时间的方式有点过时了.其他IoC的子容器是Transient注册的对象,它们存放在整个子容器中,并在子容器处理时被丢弃.这是一种更简单的方法,例如Web API与上述方案之类的自定义工作程序相结合.

scope ninject

11
推荐指数
2
解决办法
3615
查看次数

防止Lua无限循环

我使用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

c# lua

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

使用x64 dll获取错误HEAT5150

当我尝试收获的文件夹中有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应对依赖它的第三方程序.

如果有任何帮助,请编辑源代码

https://github.com/AndersMalmgren/FreePIE

wix heat

10
推荐指数
1
解决办法
3986
查看次数