小编Øyv*_*ind的帖子

如何解决异常"文件不存在"?

我有一个基本的ASP.NET MVC2站点,每次加载视图(非部分视图)时都会记录单个"文件不存在"错误.我很确定这是因为我从主页面引用了一个不存在的文件,但我无法弄清楚它是哪一个.

堆栈跟踪没用(见下文).有没有人有关于如何最好地调试这个的任何提示?

File does not exist. :    at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
   at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc application-error

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

网站上下文中的NServiceBus Publish()与Send()

我希望更好地理解为什么建议不要使用NServiceBus从网站发布消息(NServiceBus文档,滚动大约三分之二的时间).

它是否对Publish()事件和Send()命令具有语义意义?如果是这样,我认为Web应用程序可以同时发布()和发送():-)

此外,由于使用发布()不需要的Web应用程序,以了解邮件的收件人(发送()要求的Web应用程序配置了所有收件人端点),感觉就像发布()是一个更好的选择许多场景,以便您可以"任意"订阅应用程序到消息队列.

有没有人对此有这种或那种强烈的感受?我很想听听你的想法和意见.

messaging nservicebus

12
推荐指数
1
解决办法
4309
查看次数

为什么BrokeredMessage.RenewLock()只更新锁几秒钟?

我有一个BrokeredMessageContext类,它使用Timer定期检查并更新BrokeredMessage实例上的锁,以防处理此消息的进程运行的时间超过预期.它通过调用BrokeredMessage实例上的RenewLock()方法来更新锁.

我希望这个调用给我一个与原始锁相同超时的新锁(MSDN声明"你可以在与实体锁定超时相同的持续时间内更新锁定,并且没有锁定续订的最大持续时间.") ,但在调试时,锁定超时似乎增加了"任意"10-15秒.我在BrokeredMessage实例上设置了一个监视器,我可以看到每次调用RenewLock()时,LockedUntilUtc属性都会增加10-15秒.

有谁知道为什么会这样?可以做任何事情来延长锁定时间吗?

编辑:

Mike的回答如下,是正确的.事实上,我发现事实上,我试图从开始就每隔十秒更新一次锁,即使我的代码是为了在锁定到期之前的20秒之前更新锁定.这一切都归结为一个时间比较问题,以及我机器上的时间错误的事实(它提前了将近一分钟).D'哦!

c# servicebus azure brokeredmessage

8
推荐指数
1
解决办法
4477
查看次数

为什么即使ModelState有效,ValidationSummary也会出现?

我在表单的顶部有@ Html.ValidationSummary("请检查以下错误:")的视图.始终呈现文本"请检查以下错误:" ,无论模型状态是否有效(我已在视图和控制器中验证了模型状态).

谁能指出我为什么会这样?我觉得我在这里遗漏了一些非常基本的东西 - 但我很难过!

model-view-controller validationsummary

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

文件处理由HttpHandler引起的"泄漏"?

我正在遇到一个关于HttpHandler的一个非常好奇的问题,我希望这里的某些人能够阐明这一点.非常感谢您提前阅读本文.

我们创建了一个HttpHandler,它位于IIS网站的管道中,用于提供图像,视频和其他资产.HttpHandler非常轻巧.其唯一目的是检查磁盘上是否存在所请求的媒体资产,如果不存在,则将资产的URL重新写入资产所在的位置.已经以这种方式创建了处理程序,以允许我们将媒体资产迁移到新的文件夹结构中.我们还计划在图像和视频URL上使用处理程序(我将从此处称为URLRewriter)用于SEO.

如前所述,URLRewriter类非常轻量级.我们对它进行了内存分析,并确定它在运行时只消耗大约12B的内存.但是,当我们将处理程序放入IIS管道时,我们会看到一些奇怪的行为,最终会导致大量的内存消耗,并且总是会导致w3工作进程回收.我们看到的行为是这样的:

当请求http://www.ourimageserver.com/media/a/b/c/d/image1xxl.jpg(而不是实际的URL)上的图像请求时,我们注意到W3WP.exe创建并挂起,图像路径中每个文件夹的句柄:

•/ media•/ media/a•/ media/a/b•/ media/a/b/c•/ media/a/b/c/d

这是一个很大的问题,因为我们拥有数十万个媒体资产,这些资产存储在一个非常广泛且非常深的文件夹结构中.当URLRewriter部署到我们的生产环境时,IIS/W3WP创建的句柄数量迅速增长,W3WP的内存消耗也相应增加.在不到一个小时的运行时间(在交通相对平静的时期),W3WP持有的手柄数量超过22000,并且该过程已经死亡.我们还注意到,部署URLRewriter的服务器上的内核内存使用量有所增加.

使用Process Explorer和Process Monitor(无论是否附带VS调试器)仔细检查W3WP的行为,都会发现句柄是在调用URLRewriter之前创建的.实际上,句柄是在触发BeginRequest事件之前创建的.从管道中删除URLRewriter时,不会创建这些句柄.现在,一个非常奇怪的事情是,看起来句柄是由W3WP执行的NotifyChangeDirectory操作创建的.为什么W3WP会要求通知这些目录的更改?我们怎样才能阻止它这样做呢?当然这不是默认/正常行为吗?

如果您对可能导致此问题的原因有任何想法,我将非常感谢您的意见.IIS6和IIS7上的行为是相同的.

iis memory-leaks httphandler

5
推荐指数
0
解决办法
693
查看次数

我在哪里可以找到NHibernate ISession.Persist()的文档?

NHibernate的ISession公开了一个带有两个重载的方法Persist().我无法在任何地方找到有关此方法的文档.在http://nhibernate.info/doc/nh/en/index.html上的NHibernate参考资料中甚至没有提到它.

这种方法是否已弃用,还是会被弃用?什么时候应该使用?它与SaveOrUpdate()相比如何?

任何指针都将非常感激.

nhibernate isession

5
推荐指数
1
解决办法
1672
查看次数

按类型划分Linq查询的性能

讨论已经开始起作用:

我们有一个有IList的课程.事实是一个抽象的基类,有几个具体的子类(PopulationFact,GdpFact等).

最初我们以这种方式查询给定的事实,即按类型:

.Facts.FirstOrDefault(x => x.Year == 2011 && x is GdpFact)
Run Code Online (Sandbox Code Playgroud)

然而,现在提出的问题是我们是否应该引入FactType枚举来代替

.Facts.FirstOrDefault(x => x.Year == 2011 && x.FactType == FactType.Gdp)
Run Code Online (Sandbox Code Playgroud)

提出这个建议是因为它应该更快.我承认我没有写任何测试来试图辨别性能上的差异,但我有两个问题:

1)这样的'查询类型'本身就是坏的吗?
2)在事实​​是强类型的情况下,是不是添加FactType枚举只是多余的?

更新 为了澄清,这是LINQ to objects和GdpFact:Fact.

更新2 我们使用当前的典型数据(4个事实)进行了测量,结果如下:

在枚举上查找:在类型上查找0.296600000000000000003毫秒:0.24530000000000002毫秒

因此在这种情况下类型查找更快!我会仔细选择我接受的答案.

.net c# linq performance

5
推荐指数
1
解决办法
192
查看次数

Dapper和字符串隐式转换为自定义类型

我有一个名为AdviceId的类,它支持对字符串的隐式转换.我还重写了类上的ToString()方法,以确保每次调用此方法时都返回正确的字符串输出.

我的应用程序使用Dapper保留数据.以前AdviceIds是作为字符串持久化和检索的,但我现在尝试使用特定类型.但是,这失败了.有没有特别的技巧告诉Dapper在字符串和我的AdviceId类型之间使用隐式转换?

更新 我已经设法让Dapper通过向SqlMapper添加类型映射来将AdviceId实例作为字符串插入

SqlMapper.AddTypeMap(typeof(AdviceId), DbType.String);
Run Code Online (Sandbox Code Playgroud)

并通过使AdviceId实现IConvertible.但是,我没有运气将数据库从db转换回AdviceId的实例.

c# dapper

5
推荐指数
1
解决办法
3667
查看次数