我编写了一个在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原则(我不认为!).思考?
谢谢
我的C#类中有一个字节数组,需要使用NHibernate将其保存到SQL Server 2005数据库中.我应该为列使用什么SQL数据类型,以及如何使用NHiberante为我做持久性?如果答案是自定义NHibernate类型,是否有任何示例代码可以执行此操作?
将字节数组转换为字符串并将其保存在varcahr列中会更容易吗?
我们在生产服务器上的W3WP流程一直很高.它不会达到100%,但会跳到90%的公平位.为了帮助调查这一点,我使用JetBrains dotTrace描述了实时应用程序.
结果如预期.所有慢速方法都是查询数据库的NHibernate函数.我的问题是,这些慢速方法是否会对我们的Web服务器上的CPU产生影响,因为我们的数据库服务器位于单独的计算机上.当然,如果数据库服务器正在做一些工作,那么Web服务器jsut等待响应,CPU不应该上升?
如果是这种情况,我如何使用dotTrace(或其他工具,如果需要)来计算CPU的使用位置,而不是等待来自其他地方的响应的服务器?
dotTrace热点截图
您可以从屏幕截图中看到,大部分时间都花在等待外部HTTP请求完成上.但是,这些不应该影响我想到的Web服务器上的CPU使用率
简单的问题.如何在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) 我已将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个请求)。
如何确保视频被缓存?我了解部分回复的用处,但在我们的情况下,该视频将不可搜索,只有在下载整个文件后才能播放。我在这里可以看到一些方法,但是到目前为止,没有一种方法有帮助:
我尝试将max-age Cache-Control标头添加到文件,但这没有影响。理想情况下,在重新加载视频时,我们甚至都不会打到Azure(因为它永远不会改变),但是如果它随后返回304,我很乐意接受HTTP请求到Azure的费用。
我们有一套相互关联的.Net 3.5应用程序.有些是网站,有些是网络服务,有些是Windows应用程序.每个应用程序当前都有自己的配置文件(app.config或web.config),目前配置文件中有一些重复的密钥(目前手动保持同步),因为多个应用程序需要相同的配置值.此外,这套应用程序部署在各种环境中(开发,测试,直播等)
从单个配置源管理这些多个应用程序配置的最佳方法是什么,因此如果需要,可以在多个应用程序之间共享配置值?我们还希望为每个环境分别配置(因此在部署时您不必手动更改某些特定于环境的配置值,例如连接字符串),但同时又不想维护多个大型配置文件(每个环境一个)在添加新配置密钥时保持同步将证明是麻烦的.
我们在高峰时段在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文档的列,但没有已知的查询返回大型结果集.
提前致谢
其他请求的信息
目前在我们的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应用程序,试图减少CPU使用率,并喜欢NHibernate和log4net的一些奇怪的行为.
我们应用程序上超过50%的时间花在了log4net GetLogger和CreateRepository方法上,这些方法是从NHibernate中的ExecuteReader调用的.下面的截图是jetBrains dottrace热点分析,其中箭头指向调用方法到被调用方法.
下面的屏幕截图只是最慢功能的直接列表.您可以看到NHybridDataReader构造函数调用GetLogger并且需要很长时间.
显然有些可疑,我想在NHibernate中完全禁用log4net,因为我们使用其他日志记录功能.
我们的web.config中没有关于log4net的条目,所以如何禁用它?没有生成日志文件,从方法名称的外观来看,它实际上并没有记录任何东西,而只是试图找到应该写入东西的记录器.
最令人困惑的是,有人可以帮忙吗?
我们正在运行Cruise Control 1.5.7256.1并使用它来使用Nant和Nantcontrib进行构建.构建失败并正确成功,但是当它们失败时,相关的错误消息将显示在CCNet构建报告页面上.见下图
可以在"视图构建日志"页面上看到构建错误,但它们没有通过"构建报告"页面.构建本身非常简单,它只是一个构建.Net 3.5 .sln文件的Nantcontrib msbuild元素.
有任何想法吗?
asp.net ×7
nhibernate ×5
.net ×2
asp.net-mvc ×2
sql-server ×2
azure ×1
c# ×1
caching ×1
dottrace ×1
html5 ×1
iis ×1
log4net ×1
msbuild ×1
nant ×1
nantcontrib ×1
networking ×1
performance ×1
sql ×1
video ×1