小编Kal*_*exx的帖子

如何在使用RazorEngine时输出原始html(不是来自MVC)

我正在尝试使用HTML内容生成电子邮件.这个内容已经经过了环境卫生,所以我并不担心这方面,但是当我打电话时:

Razor.Parse(template, model);
Run Code Online (Sandbox Code Playgroud)

在以下Razor模板上:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <body>
        @(new System.Web.HtmlString(Model.EmailContent))
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

输出的电子邮件是HTMl编码的,但我需要它解码.我怎么能做到这一点?

c# html-encode razor

98
推荐指数
3
解决办法
6万
查看次数

Asp.net MVC页面为图像文件提供Mime类型警告

虽然我没有看到任何受此影响的功能或jquery UI元素,但是当我访问我的asp.net mvc网页时,Chrome开发者控制台会记录一堆错误消息,如下所示:

资源解释为图像但使用MIME类型application/octet-stream传输.

所有警告都是针对jquery UI图像的(虽然我没有任何自定义图像,所以我不知道它是否只是jquery UI).所有jquery图像仍然正确加载.

有没有人知道为什么会这样?

asp.net-mvc asp.net-development-serv mime-types google-chrome-devtools

55
推荐指数
1
解决办法
1万
查看次数

如何重新编译Elixir项目并从iex中重新加载?

我目前正在学习Elixir,通过在elixir-lang网站上浏览OTP和混合教程,我很难找到如何从shell中重新编译和重新加载项目.

在Erlang中我会这样做make:all([load]),它会编译并加载发生的任何更改.然而,iex总是说:up_to_date,这确实有意义,因为Elixir使用mix来满足它的编译需求.

我在iex中找不到任何等价物.

elixir-mix elixir

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

Youtube的HTML5视频播放器如何控制缓冲?

我正在观看youtube视频,我决定调查其视频播放器的某些部分.我注意到,与我见过的大多数HTML5视频不同,Youtube的视频播放器不会使用普通视频源,而是使用blob网址作为源.

以前我测试了HTML5视频,我发现服务器从一开始就开始流式传输整个视频,并在后台缓冲整个视频的剩余部分.这意味着如果您的视频为300兆,则将下载所有300兆.如果你寻求中间,它将从搜索位置一直开始下载到最后.

Youtube不会这样工作(至少在chrome中).相反,它设法控制缓冲,因此它只在暂停时缓冲一定量.它似乎只缓冲相关的部分,所以如果你跳过它将确保不缓冲不太可能被观看的部分.

在我试图研究它是如何工作的时候,我注意到视频src标签有一个值blob:http%3A//www.youtube.com/ee625eee-2802-49b2-a13f-eb374d551d54,它指向blob,然后导致我输入数组.使用这两个资源,我可以将mp4视频加载到blob中并将其显示在HTML5视频标记中.

然而,我现在坚持的是Youtube如何处理这些碎片.查看网络流量,它似乎发送请求,以http://r6---sn-p5q7ynee.c.youtube.com/videoplayback2.1mb的块返回二进制视频数据.值得注意的是,由于HTML5视频请求导致的大多数正常请求似乎在流式传输时收到了206响应代码,但是youtube的播放视频调用获得了200个响应代码.

我试图只尝试加载一系列字节(通过设置Rangehttp标头),但遗憾的是失败了(我假设因为视频中没有视频的元数据).

在这一点上,我一直在想弄清楚Youtube如何实现这一目标.我提出了几个想法,虽然我没有完全卖掉:

1)Youtube会在每次/videoplayback通话时发送自包含的视频和音频块.这似乎是上传方面相当沉重的负担,似乎很难将它们拼接在一起,使它看起来像是一个无缝的视频.此外,视频标签,似乎认为这是一个完整的视频,从通话判断$('video').duration$('video').currentTime,这使我相信,视频标签认为它是一个单一的视频文件.最后,vidoe src标签永远不会改变,这让我相信它正在使用单个blob而不是切换blob.

2)Youtube构造一个预先确定为完整视频数组大小的空blob,并在下载时更新blob.然后它将确保用户没有太接近最后下载的片段(以防止用户进入blob的未下载部分).我看到的问题是,我没有看到通过javascript动态更新blob的任何方法(尽管我可能只是在谷歌上搜索它)

3)Youtube下载元数据,然后通过在下载时附加视频片段来开始按顺序构建blob.我用这种方法看到的问题是我不明白它将如何处理后缓冲区域中的搜索.

也许我只是错过了一个在我面前的明显答案.任何人都有任何想法?


编辑:我只想到了第四个选项.另一个想法是,他们可能会使用文件API将二进制块写入文件并使用该文件流式传输.文件API似乎能够搜索特定位置,因此允许您使用空字节填充视频并在接收时填充它们.这肯定也适合视频搜索.

youtube video html5

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

我可以使用Moq验证是否在复杂参数中使用特定值调用了模拟方法吗?

所以假设我在嘲笑以下类:

public class ClassAParams
{
    public int RequestedId { get; set; }
    public string SomeValue { get; set; }
}

public class ClassA
{
    public void ExecuteAction(ClassAParams executeParams) {}
}
Run Code Online (Sandbox Code Playgroud)

现在说我有另一个类(让我们称它ClassB),我正在创建一个单元测试,我想确保ClassB.Execute()调用时,ClassB调用ClassA.ExecuteAction()但我想确保它调用该方法的参数具有ClassAParams.RequestedId值1.

通常情况下,我会这样做 myMock.Verify(x => x.ExecuteAction(new ClassAParams { RequestedId = 1, SomeValue = "something" }));

问题是,我不想检查SomeValue参数的值,或者ClassAParams在单元测试中检查任何其他属性.其他属性将在其他单元测试中进行检查,但必须验证在每个单元测试中使用正确的属性调用它(即使我不关心特定单元测试的范围)也会使单元维护变得烦人.

有没有办法使用Moq来验证传递给模拟方法的结构是否只将某些属性作为特定值,并忽略其余的?

c# parameters unit-testing moq

39
推荐指数
1
解决办法
1万
查看次数

如何调整jQuery UI手风琴的高度?

在我的UI中,我有一个像这样的手风琴设置:

<div id="object_list">
    <h3>Section 1</h3>
    <div>...content...</div>

    // More sections
</div>
Run Code Online (Sandbox Code Playgroud)

手风琴在首次成型时可以正常工作,并且它似乎可以很好地适应每个部分内的内容.但是,如果我在.accordion()调用之后(通过ajax)在手风琴中添加更多内容,则该节的内部最终会溢出.

由于手风琴的形成几乎没有任何内容,所有的内部div都非常小,因此内容溢出,你手里拿着带有滚动条的手风琴,几乎没有观看区域.

我试图将最小高度样式添加到object_list div,并且内容divs无效.将min-height添加到内部div有点工作,但它搞砸了手风琴的动画,并将它添加到object_list div完全没有.

即使没有足够的内容填充这些部分,如何从内容部分中获得合理的大小?

javascript jquery jquery-ui accordion

37
推荐指数
4
解决办法
8万
查看次数

如何让WinForms静静地忽略未处理的异常?

这变得非常恼人.现在我有一个winforms应用程序,但事情没有正常工作,但据我所知,没有例外.在逐步完成几乎所有相关代码之后,事实证明在我的应用程序开始时抛出异常.

简而言之,在WinForms中,如果出现异常,WinForms库会忽略它.没有"发生未处理的异常"抛出JIT消息,它只是停止处理当前事件并返回GUI.

这会导致随机错误,因为在加载此数据之前发生异常,因此未调用加载数据的代码.

为了看到这一点,我创建了一个全新的WinForms应用程序,并输入以下代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string blah = null;
        blah.Trim();
    }
}
Run Code Online (Sandbox Code Playgroud)

按F5并加载表单而不显示任何错误,即使正在抛出空引用.

然后我尝试转到我的Program.csmain方法并添加Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);到它.仍然我的表单加载而不会导致任何错误被抛出.

即使我知道我可以告诉VS打破所有异常,我发现这种情况非常糟糕.它导致了很难在生产中调试的奇怪问题,因为这是一个内部工具,我真的很想拥有它,所以当异常发生时它实际上会出错,而不是默默地忽略它.

有谁知道如何做到这一点?


更新:只是为了更新我从评论中学到的东西.

这似乎是一个64位的Windows问题,正如我从这个问题中学到的,我在发布之前没有看到.在那个问题中,它指出了一个关于此的微软错误报告,其中有这样的说法:

你好,

此错误已关闭为"外部",因为此行为是由x64版本的Windows处理异常引起的.当用户模式异常穿过内核转换时,x64版本的Windows不允许异常传播.因此,附加的调试器不知道发生异常的事实导致调试器未能在未处理的异常上中断.

不幸的是,Visual Studo团队无法解决这个问题,这是操作系统设计的结果.有关此问题的所有反馈都应提交给Windows团队; 但Windows团队认为这是"正确的"操作系统设计,并认为x86行为"不正确".

最诚挚的问候,Visual Studio Debugger

话虽这么说,构建不通过visual studio(或使用Ctrl + F5运行)似乎显示JIT异常消息框EXCEPT如果你有以下代码Program.cs:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
Run Code Online (Sandbox Code Playgroud)

该代码将导致窗口忽略该异常.

但是,如果您(而不是)订阅该Application.ThreadException事件,不仅会捕获您的异常,Visual Studio的调试器在未处理的异常中中断!

c# exception winforms

32
推荐指数
2
解决办法
8981
查看次数

如何防止EF"在创建模型时无法使用上下文"错误?

看看我的Elmah错误日志,我看到InvalidOperationException来自Entity Framework 的一些s处理:

The context cannot be used while the model is being created.
Run Code Online (Sandbox Code Playgroud)

这是Nuget最新的EF CodeFirst库.我能够在网上找到的唯一信息是,它是由数据上下文作为单例引起的,这当然不是我的情况.在我的Windsor安装程序中,我的EF工作单元结构正在注册:

container.Register(Component.For<IUnitOfWork>()
                            .ImplementedBy<EFUnitOfWork>()
                            .LifeStyle
                            .PerWebRequest);
Run Code Online (Sandbox Code Playgroud)

我能够通过在VS中点击F5来重新创建错误以启动调试会话,并且当IIS正在启动时,将第二个网页加载到调试会话.

我怀疑这是因为用户试图访问系统而Asp.net由于缺乏活动而卸载,这是有道理的,因为我的产品目前处于非常小的beta测试中.但是,由于真实的人正在使用带有实时数据的网站,我需要尽可能少的错误.

有谁知道如何防止这种情况发生?


编辑:我更新了我的windsor控制器,现在包含以下代码:

        container.Register(Component.For<IUnitOfWork>().ImplementedBy<EFUnitOfWork>().LifeStyle.PerWebRequest);
        using (var context = new MyJobLeadsDbContext())
        {
            context.Set<UnitTestEntity>().Any();
        }
Run Code Online (Sandbox Code Playgroud)

但是,当我在IIS加载应用程序时尝试执行第二个Web请求时,仍会发生上一个错误


编辑2:根据要求,这是堆栈

   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.Initialize()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)
   at MyApp.DomainModel.Queries.Users.UserByEmailQuery.Execute() in C:\Users\KallDrexx\Documents\Projects\MyApp\MyApp.DomainModel\Queries\Users\UserByEmailQuery.cs:line 44
   at MyApp.Infrastructure.MyAppMembershipProvider.GetUser(String email, Boolean userIsOnline) in C:\Users\KallDrexx\Documents\Projects\MyApp\MyApp\Infrastructure\MyAppMembershipProvider.cs:line 102
   at System.Web.Security.Membership.GetUser(String username, Boolean userIsOnline)
   at System.Web.Security.Membership.GetUser()
   at MyApp.MyAppBaseController.Initialize(RequestContext …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first entity-framework-4.1

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

如何将后台工作线程设置为单线程单元?

我正在创建一个自动测试运行应用程序.在这部分应用程序中,我正在研究一个轮询服务器.它的工作原理是不断轮询Web服务器,以确定何时应运行新的自动化测试(对于我们的GUI应用程序的夜间自动运行).

当轮询服务器看到请求时,它会下载所需的所有信息,然后在后台工作程序中执行测试运行.问题是测试运行的一部分具有Clipboard.Clear()在后台工作线程中发生的OLE,COM和其他调用(例如).发生其中一个调用时,会发生以下异常:

在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式.确保您的Main函数标记了STAThreadAttribute.

如何将后台工作线程标记为单线程单元?我的Program.cs中的Main调用显然已经具有该属性.

c# clipboard exception-handling backgroundworker sta

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

如何使用Roslyn编译C#解决方案?

我有一个软件,可以根据用户操作为C#项目生成代码.我想创建一个GUI来自动编译解决方案,所以我不必加载Visual Studio只是为了触发重新编译.

我一直在寻找机会与Roslyn一起玩,并决定尝试使用Roslyn而不是msbuild来做到这一点.不幸的是,我似乎找不到以这种方式使用Roslyn的任何好资源.

谁能指出我正确的方向?

c# roslyn

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