小编tra*_*max的帖子

Javascript奇怪的日期操作

我在一个看似有信誉的来源中遇到了一个奇怪的日期操作,我不明白.这是流行UI框架的支持文档中的示例的一部分:

var startDate = start.value();  // returns Date object
startDate = new Date(startDate);
startDate.setDate(startDate.getDate());
Run Code Online (Sandbox Code Playgroud)

现在逐行var startDate = start.value();返回Date对象并将其保存在startDate变量中.好在这里,没问题.

然后我们创建具有相同值的新Date对象并将其分配回同一个变量(稍微有些混乱,但我可以忍受它).

第三行是一个真正的谜题 - 我们得到月中的getDate某一天(通过)并将其指定为setDate同一个变量中的月份(通过).

现在的问题是:这是一个糟糕的代码,可能是未完成的重构遗留下来的吗?或者这是否真的有意义,它做了一些操作,如删除时间(看起来不像)?如果是,它会做什么?

UPD:代码示例在http://demos.telerik.com/kendo-ui/datepicker/rangeselection

javascript date

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

库通过标头验证文件格式

在过去的几个月中,我有几次通过它的标题验证文件格式的相同任务:JPEG,PDF,Word和其他流行文件.

我想知道C#/ .Net是否有可用的库?或者是时候为NuGet目录开始一个小项目了吗?

.net c#

6
推荐指数
1
解决办法
4166
查看次数

Autofac生命周期和匹配生命周期范围内的默认提供者

我有一个使用Autofac进行依赖注入的ASP.NET MVC Web应用程序.有时,此Web应用程序将启动一个线程,以便与请求线程分开执行某些工作.当后台线程启动时,它会从根容器建立新的Autofac生存期范围并运行一些操作.

public IAsyncResult Run<T>(Action<T> action)
{
    var NewTask = System.Threading.Tasks.Task.Factory.StartNew(() =>
    {
        using (var Scope = Runtime.Container.BeginLifetimeScope())
        {
            var Input = Scope.Resolve<T>();
            action(Input);
        }
    });

    return NewTask;
}
Run Code Online (Sandbox Code Playgroud)

我的一个与Autofac注册的依赖有两种不同的实现:一个适用于HTTP请求的寿命和其他适合所有其他的寿命.我试着将它们注册如下:

builder
.Register(c => new Foo())
.As<IFoo>()
.InstancePerLifetimeScope();

builder
.Register(c => new FooForHttp(HttpContext.Current))
.As<IFoo>()
.InstancePerMatchingLifetimeScope(WebLifetime.Request);
Run Code Online (Sandbox Code Playgroud)

Autofac选择FooForHttphttp请求(如预期的那样).但是,当我的后台线程旋转时,任何解决的尝试都会IFoo导致异常:

从请求实例的作用域中看不到具有匹配"httpRequest"的标记的作用域.这通常表示注册为每HTTP请求的组件正被SingleInstance()组件(或类似场景)重新请求.在Web集成下,始终从DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime请求依赖项,从不从容器本身请求.

我知道Autofac总是使用最后注册的提供程序作为特定组件的默认提供程序.我在这里假设它将使用最后注册的合适提供者.

我是否遗漏了某些内容,或者是否有更好的方法根据当前生命周期范围的标记选择提供商?

c# autofac

6
推荐指数
1
解决办法
4012
查看次数

Regexp-replace:匹配中的多个替换

我正在将我们的MVC3项目转换为使用T4MVC.我想替换java-script包也可以使用T4MVC.所以我需要更换

"~/Scripts/DataTables/TableTools/TableTools.min.js"
"~/Scripts/jquery-ui-1.8.24.min.js"
Run Code Online (Sandbox Code Playgroud)

Scripts.DataTables.TableTools.TableTools_min_js
Scripts.jquery_ui_1_8_24_min_js
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Notepad ++作为regexp工具,它正在使用POSIX正则表达式.我可以找到脚本名称并将其替换为这些正则表达式:

找: \("~/Scripts/(.*)"\)

用...来代替 \(Scripts.\1\)

但我无法弄清楚如何将文件名中的点和短划线替换为下划线并将正斜杠替换为点.

我可以检查js-filename在名称中有点或短划线

 \("~/Scripts/(?=\.*)(?=\-*).*"\)
Run Code Online (Sandbox Code Playgroud)

但是如何替换组内的组?

需要在组内进行非贪婪替换,并且这些替换按顺序进行,因此转换为点的正斜杠不会在之后转换为下划线.

这是一个非关键问题,我已经手动完成了所有替换,但我认为我对regexp很好,所以这个问题让我感到困惑!

ps首选工具是Notepad ++,但任何POSIX正则表达式解决方案都可以 - )

pps 在这里你可以获得要替换的东西 的样本这里是目标文本

regex replace notepad++ t4mvc

6
推荐指数
1
解决办法
5923
查看次数

通过WebApi将文件上载到Azure Blob存储,而无需访问本地文件系统

我正在尝试通过web-api将文件从本地命令行客户端上传到Azure存储.我正在使用Azure Web站点.与客户合作不是问题.而且我的一切工作都很好.这是web-api代码:

    public async Task<HttpResponseMessage> PostUpload()
    {
        // need a local resource to store uploaded files temporarily
        LocalResource localResource = null;
        try
        {
            // Azure web-site fails here
            localResource = RoleEnvironment.GetLocalResource("TempStorage");
        }
        catch (Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Unable to get access to local resources");
        }

        var provider = new MultipartFormDataStreamProvider(localResource.RootPath);

        // Read the form data.
        await Request.Content.ReadAsMultipartAsync(provider);

        // snipped validation code
        var container = // code to get container

        foreach (var fileData in provider.FileData)
        {
            var filename = GetBlobName(fileData); …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage-blobs asp.net-web-api

6
推荐指数
1
解决办法
7086
查看次数

Aspnet_compiler.exe做了什么?

我正在尝试为我们的MVC5.1应用程序预编译视图以提高第一个加载性能(有关更多上下文,请参阅此问题).

我正在玩aspnet_compiler.exe:

aspnet_compiler -p d:/path/to/myapp/ -v myapp
Run Code Online (Sandbox Code Playgroud)

我可以肯定地看到正在进行的编译 - 关于Obsolete方法使用的警告.但它把结果放在哪里?

在实验之前我已经清理过Temporary Asp.Net Files,只是为了看到结果.编译结束后,什么都没发生.双方c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\仍然是空的.

我也尝试使用精确路径执行虚拟路径

aspnet_compiler -p d:/path/to/myapp/ -v d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)

那个文件夹留空了.但是编译器的第二次运行要快得多,因为我没有清理构建.这让我觉得结果可以在某处获得.

所以我的问题是:它在哪里存储编译结果?如何让IIS使用这些结果而不是实时编译?

更新:我已经找到了如何捕获编译的输出.只需将路径指定为最后(或第一个)参数:

aspnet_compiler -p d:/path/to/myapp/ -v / d:/tmp/myapp
Run Code Online (Sandbox Code Playgroud)

这就留下了一个问题,我怎样才能让IIS拿起它?

asp.net asp.net-mvc aspnet-compiler pre-compilation

6
推荐指数
0
解决办法
4930
查看次数

如何将Asp.Net Identity中的大型cookie分成较小的cookie以允许多个声明?

我正在为我们的MVC应用程序开发基于声明的授权原型.我们使用Asp.Net Identity进行身份验证.

我们希望对每个控制器操作提出索赔,然后给予/取消用户的索赔,这样我们就可以很好地控制谁可以去哪里.

我们的应用程序已有800多个动作并且不断增长.我做了一个小测试应用程序,看看如何处理这些索赔.并遇到一个问题:cookie限制为4092字节.

并且拥有大量声明会增加身份验证Cookie.大约600个具有短名称/值(每个5个字符)的声明为我提供了大小超过4K的cookie,并且具有此数量的声明的用户无法登录 - 无法在浏览器中设置cookie.

600个声明不是我们的应用程序的限制.我们可能还需要更多.

有没有办法将auth-cookie分成几个较小的cookie?

ps如果你很好奇,这里是我的代码"profiler"以及项目其余部分.

pps我知道大型cookie的性能影响.现在不用担心.

更新目前我的答案没有开箱即用的解决方案.但看起来我不是唯一有这个问题的人.Microsoft.Owin正在处理auth-cookie.目前Owin.Cookies的源代码具有ChunkingCookieManager,默认情况下在CookieAuthenticationMiddleware中分配.

这段代码非常新鲜的坏消息(已于2014年7月10日签入,仅20天).它可以通过预先发布的nuget Microsoft.Owin.Security.Cookies获得.不确定我是否想在生产现场使用RC2.

还有其他方法吗?

cookies asp.net-mvc claims owin asp.net-identity

6
推荐指数
2
解决办法
2944
查看次数

用于DI的NEventStore组件的对象组成

我正在将NEventStore添加到我现有的项目中,而我正在使用DI.

我想要一个CommonDomain.Persistence.EventStore.IRepository注入我的MVC控制器的实例.这个接口的唯一实现EventStoreRepository.
这个类依赖于IConstructAggregates我发现唯一实现AggregateFactory被标记为内部的,位于测试项目,具有非常古怪的文件名.

我不应该使用IRepository?(为什么它被标记为公共而不被任何内部代码消耗?)
我在这里查看示例项目并IRepository用于操作聚合.

或者我应该自己实施IConstructAggregates

c# dependency-injection object-composition event-sourcing neventstore

6
推荐指数
1
解决办法
357
查看次数

MVC5 Async ActionResult.那可能吗?

在我们的应用中有CQRS:我们IAsyncCommandIAsyncCommandHandler<IAsyncCommand>.

通常,命令通过Mediator处理,如下所示:

var mediator = //get mediator injected into MVC controller via constructor
var asyncCommand = // construct AsyncCommand
// mediator runs ICommandValidator and that returns a list of errors if any
var errors = await mediator.ProcessCommand(asyncCommand); 
Run Code Online (Sandbox Code Playgroud)

这很好.现在我注意到我在控制器动作中做了很多重复的代码:

public async virtual Task<ActionResult> DoStuff(DoStuffAsyncCommand command)
{
    if (!ModelState.IsValid)
    {
        return View(command);
    }

    var result = await mediator.ProcessCommandAsync(command);

    if (!result.IsSuccess())
    {
        AddErrorsToModelState(result);
        return View(command);
    }
    return RedirectToAction(MVC.HomePage.Index());
}
Run Code Online (Sandbox Code Playgroud)

这种模式在许多控制器中反复重复.因此,对于单线程命令,我已经完成了简化:

public class ProcessCommandResult<T> : ActionResult where T : ICommand …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asynchronous cqrs

6
推荐指数
1
解决办法
2168
查看次数

BrowserLink使用请求来浏览浏览器并吃掉100%的CPU

我发现Visual Studio 2013中的BrowserLink导致浏览器每秒发送数百个本地主机请求(根据Fiddler),这导致Chrome和IE中的CPU使用率非常高.一旦我关闭BrowserLink,CPU使用率就会降低并且工作正常.

这种情况几天前就开始发生在一个项目上,我无法确定造成这种情况的原因.

我搜索过,发现了一些关于这个问题的帖子,但没有比关闭BrowserLink更好的了.这是一个非常有用的功能.

知道怎么解决?

visual-studio visual-studio-2013 browser-link

6
推荐指数
0
解决办法
499
查看次数