小编Rob*_*ton的帖子

具有绝对URL的Asp .Net MVC RedirectToAction

我编写了一个在IFrame中运行的Asp .Net MVC应用程序.当我的一个控制器方法返回RedirectToAction()时,我希望顶部浏览器URL重定向到该地址,而不仅仅是我的IFrame.我该怎么做呢?因为我在另一个站点内运行,我需要将绝对URL传递给浏览器,即" http://parentsite.com/myapp/ {controller}/{action}"

我想这相当于将我的超链接的目标属性设置为'_top',以便整个站点重定向(这将通过扩展HtmlHelper非常简单),但我如何为服务器端重定向执行此操作?

到目前为止,我的解决方案是覆盖OnResultExecuting,提取我打算重定向到的URL,然后重定向到Frame Breaker View,将我最初打算重定向的URL作为参数传递.Frame Breaker View简单地写出了一些javascript,它将顶级浏览器URL设置为我的原始URL.这种方法有一个比我想要的额外的HTTP请求,但至少没有违反任何MVC原则(我不认为!).思考?

谢谢

asp.net asp.net-mvc

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

使用NHibernate在SQL数据库中存储字节数组的最佳方法是什么?

我的C#类中有一个字节数组,需要使用NHibernate将其保存到SQL Server 2005数据库中.我应该为列使用什么SQL数据类型,以及如何使用NHiberante为我做持久性?如果答案是自定义NHibernate类型,是否有任何示例代码可以执行此操作?

将字节数组转换为字符串并将其保存在varcahr列中会更容易吗?

c# sql sql-server nhibernate sql-server-2005

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

使用jetBrains dotTrace检测W3WP CPU问题

我们在生产服务器上的W3WP流程一直很高.它不会达到100%,但会跳到90%的公平位.为了帮助调查这一点,我使用JetBrains dotTrace描述了实时应用程序.

结果如预期.所有慢速方法都是查询数据库的NHibernate函数.我的问题是,这些慢速方法是否会对我们的Web服务器上的CPU产生影响,因为我们的数据库服务器位于单独的计算机上.当然,如果数据库服务器正在做一些工作,那么Web服务器jsut等待响应,CPU不应该上升?

如果是这种情况,我如何使用dotTrace(或其他工具,如果需要)来计算CPU的使用位置,而不是等待来自其他地方的响应的服务器?

dotTrace热点截图 替代文字

您可以从屏幕截图中看到,大部分时间都花在等待外部HTTP请求完成上.但是,这些不应该影响我想到的Web服务器上的CPU使用率

asp.net iis nhibernate performance dottrace

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

asp .net mvc OnResultExecuting modify filterContext Result

简单的问题.如何在Controller中重写OnResultExecuting方法并强制使用不同的ActionResult?

示例代码如下.目前,原始的ActionResutl继续执行,我的新RedirectResult被忽略.

RedirectResult redirectResult = new RedirectResult("http://www.google.com");
filterContext.Result = redirectResult;
base.OnResultExecuting(filterContext);
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

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

如何使浏览器缓存来自Azure CDN的视频响应?

我已将mp4视频动画上传到Azure Blob存储。除了将Content-Type设置为video / mp4之外,所有标头都是默认值。可以在http://paddingtondev.blob.core.windows.net/media/1001/animation_default_headers.mp4上访问该视频。

我在该Blob存储帐户上有一个Azure CDN。通过CDN的同一视频的URL为http://az593791.vo.msecnd.net/media/1001/animation_default_headers.mp4

当我通过网页上的HTML5视频元素访问Blob存储的视频时,浏览器(已在FF和Chrome中进行了测试)通过200 HTTP响应接收整个视频。然后,对该视频的进一步请求从Blob存储收到304响应。

但是,当您通过Azure CDN请求视频时,它会以一系列HTTP 206部分响应的形式返回给您。这是对浏览器在请求中指定Range标头的响应。

但是,通过CDN对视频的其他请求不会被缓存,浏览器会重新下载整个视频(通过一系列其他206个请求)。

如何确保视频被缓存?我了解部分回复的用处,但在我们的情况下,该视频将不可搜索,只有在下载整个文件后才能播放。我在这里可以看到一些方法,但是到目前为止,没有一种方法有帮助:

  1. 禁止Azure CDN返回部分响应
  2. 以某种方式从原始浏览器请求中删除范围标头
  3. 劝说浏览器缓存206个部分响应

我尝试将max-age Cache-Control标头添加到文件,但这没有影响。理想情况下,在重新加载视频时,我们甚至都不会打到Azure(因为它永远不会改变),但是如果它随后返回304,我很乐意接受HTTP请求到Azure的费用。

video html5 caching azure browser-cache

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

配置多个.Net应用程序的最佳方法

我们有一套相互关联的.Net 3.5应用程序.有些是网站,有些是网络服务,有些是Windows应用程序.每个应用程序当前都有自己的配置文件(app.config或web.config),目前配置文件中有一些重复的密钥(目前手动保持同步),因为多个应用程序需要相同的配置值.此外,这套应用程序部署在各种环境中(开发,测试,直播等)

从单个配置源管理这些多个应用程序配置的最佳方法是什么,因此如果需要,可以在多个应用程序之间共享配置值?我们还希望为每个环境分别配置(因此在部署时您不必手动更改某些特定于环境的配置值,例如连接字符串),但同时又不想维护多个大型配置文件(每个环境一个)在添加新配置密钥时保持同步将证明是麻烦的.

.net asp.net configuration

4
推荐指数
1
解决办法
1263
查看次数

SQL Server 2005网络IO等待时间(ASYNC_NETWORK_IO等待类型)问题

我们在高峰时段在Web应用程序上遇到性能问题,目前在一个2003 IIS6 Web服务器和一个SQL Server 2005数据库服务器之间分配.DB服务器上的查询时间看起来很好(大约30ms),CPU很低(低于20%),但查询可能需要很长时间才能在Web服务器上执行(超过1秒).

我正在寻找perfmon的线索,并发现平均网络IO等待时间约为400毫秒,这可以很好地解释性能差异.我还在SSMS内部运行了一些查询,看到每秒大约有10,000ms的累积ASYNC_NETWORK_IO等待类型.

从某些研究来看,似乎问题是网络容量不足,或者Web服务器没有足够快地处理结果.我如何调查它是什么,然后解决?

我们将NHibernate用于数据层,因此据我所知,没有使用DataReader.虽然有一个表包含一个包含压缩XML文档的列,但没有已知的查询返回大型结果集.

提前致谢

其他请求的信息

  • Sql Server设置为使用TCP/IP和共享内存协议
  • 我们每页大约提出4个DB请求,没什么可笑的
  • 在高峰时间,DB Server发送1.5MB /秒
  • 最高峰时,Web服务器CPU约为60%
  • 在峰值时,Web服务器NIC负载为13MB /秒.8MB正在发送,5MB正在接收.相同的NIC处理SQL和HTTP流量
  • 我们确实使用了一些缓存,但应用程序非常动态,因此大多数时候都需要最新的数据

sql-server asp.net nhibernate networking sql-server-2005

4
推荐指数
1
解决办法
2821
查看次数

ASP.NET NHibernate事务持续时间

目前在我们的ASP.NET应用程序中,每个请求有1个会话,每次加载或更新和对象时都会创建一个事务.见下文:

    public static T FindById<T>(object id)
    {
        ISession session = NHibernateHelper.GetCurrentSession();
        ITransaction tx = session.BeginTransaction();
        try
        {
            obj = session.Get<T>(id);
            tx.Commit();
        }
        catch
        {
            session.Close();
            throw;
        }
        finally
        {
            tx.Dispose();
        }
        return obj;
    }

    public virtual void Save()
    {
        ISession session = NHibernateHelper.GetCurrentSession();
        ITransaction transaction = session.BeginTransaction();
        try
        {
            if (!IsPersisted)
            {
                session.Save(this);
            }
            else
            {
                session.SaveOrUpdateCopy(this);
            }
            transaction.Commit();

        }
        catch (HibernateException)
        {
            if (transaction != null)
            {
                transaction.Rollback();
            }
            if (session.IsOpen)
            {
                session.Close();
            }
            throw;
        }
        finally
        {
            transaction.Dispose(); …
Run Code Online (Sandbox Code Playgroud)

asp.net nhibernate

4
推荐指数
1
解决办法
918
查看次数

NHibernate log4net性能问题 - 如何禁用?

我正在分析我们的ASP .NET应用程序,试图减少CPU使用率,并喜欢NHibernate和log4net的一些奇怪的行为.

我们应用程序上超过50%的时间花在了log4net GetLogger和CreateRepository方法上,这些方法是从NHibernate中的ExecuteReader调用的.下面的截图是jetBrains dottrace热点分析,其中箭头指向调用方法到被调用方法.

替代文字

下面的屏幕截图只是最慢功能的直接列表.您可以看到NHybridDataReader构造函数调用GetLogger并且需要很长时间.

替代文字

显然有些可疑,我想在NHibernate中完全禁用log4net,因为我们使用其他日志记录功能.

我们的web.config中没有关于log4net的条目,所以如何禁用它?没有生成日志文件,从方法名称的外观来看,它实际上并没有记录任何东西,而只是试图找到应该写入东西的记录器.

最令人困惑的是,有人可以帮忙吗?

asp.net nhibernate log4net

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

Cruise Control .Net未显示Nant构建错误

我们正在运行Cruise Control 1.5.7256.1并使用它来使用Nant和Nantcontrib进行构建.构建失败并正确成功,但是当它们失败时,相关的错误消息将显示在CCNet构建报告页面上.见下图

没有错误!

可以在"视图构建日志"页面上看到构建错误,但它们没有通过"构建报告"页面.构建本身非常简单,它只是一个构建.Net 3.5 .sln文件的Nantcontrib msbuild元素.

有任何想法吗?

.net cruisecontrol.net msbuild nant nantcontrib

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