我在DI IOC的Web项目中使用StructureMap.它工作得很完美,但我不知道如何用StructureMap编写单元测试.
我应该在AssemblyInitialize中开始配置StructureMap,就像在global.asax中一样,除了datacontext不使用实时LinqToSqlDataContext但是有些内存数据如下:
[AssemblyInitialize]
public static void Start()
{
ObjectFactory.Configure(x =>
{
x.For<IDataContext>().HttpContextScoped().Use<MemoryDataContext>()
.Ctor<string>("connectionString")
.Is(ConfigurationManager.ConnectionStrings["DEVConnection"].ConnectionString);
x.For<IDepartamentRepository>().Use<DepartamentDB>();
x.For<IDevelopmentProcess>().Use<DevelopmentProcesses>().OnCreation(c => c.User = Current.CurrentUser);
x.For<IActivityProcess>().Use<ActivitiesProcess>().OnCreation(c=> c.User = Current.CurrentUser);
x.For<IDevDeveloperRepository>().Use<DevDeveloperDB>();
x.For<IDevelopmentRepository>().Use<DevelopmentDB>();
x.For<IActivityRepository>().Use<ActivityDB>();
x.For<IActivityTypeRepository>().Use<ActivityTypeDB>();
x.For<IDevUserRepository>().Use<DevUsersDB>();
x.For<IAttachmentRepository>().Use<AttachmentDB>();
}
);
}
Run Code Online (Sandbox Code Playgroud)
然后使用ObjectFactory.GetInstance()测试或我该怎么做?
我正在制作一个涉及登录服务器的应用程序,但是,后期数据需要一些编码.
Dim strEncUsername As String = Server.HtmlEncode(Me.txtUsername.Text)
Run Code Online (Sandbox Code Playgroud)
但是,由于这不是一个asp.net应用程序,这不起作用.干草我应该怎么做?我试图找一个Imports的东西,但没有真正的运气.
我们为一个正式将其标准浏览器从IE6升级到IE8(队列庆祝活动)的组织的Web应用程序,我们已经设置了所有的DOCTYPE <!DOCTYPE html>(以及修复了其他HTML代码),我认为在IE8中这将是导致页面在IE8标准模式下呈现.但是,它仍然以IE7标准模式显示.
我已经添加<meta http-equiv="X-UA-Compatible" content="IE=8">到该<head>部分,它仍然无法默认为IE8标准模式.我假设在这个阶段必须有一个强制模式的设置(可能是组策略等).
在MSDN论坛上阅读hack之后,如果你将meta标签放在标签之前<html>,它就会正确地显示为IE8标准模式,这对我有用.还有另一种方法吗?看到那里的元标记看起来很糟糕......
以下是每个页面的组成方式:
<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<html lang="en">
<head>
<meta charset="utf-8">
<title>Page Title</title>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在研究一个在每个页面上广泛使用用户控件的asp.net Web应用程序.大多数页面包含大约10-20个用户控件.用户控件似乎是业务对象的可视化表示(如果这是有意义的),尽管具有更精细的粒度,例如选项卡控件的每个选项卡,其内容在用户控件中.该项目本身有200多个用户控件(ascx文件).
应用程序的性能非常差(我正在研究的原因).每个事件(例如点击或下拉选择等)都需要大约5秒的时间来加载页面(在Visual Studio中为10秒).该应用程序没有使用Ajax.
跟踪很痛苦,因为aspx页面本身在代码隐藏中没有代码,因为用户控件会查看所有这些代码,因此跟踪单个页面需要该页面上所有用户控件中的跟踪语句.
我实际上认为让每个用户控件都能看到它的业务代码并且可以重复使用是一个明智的想法,但是过度使用用户控件会导致性能下降吗?这看起来像是由具有强大WinForms背景的人编写的asp.net应用程序的结构吗?
EDIT
认为我应该补充一点,我不是在质疑用户控件的使用(甚至数量),而只是在页面上有这么多东西(例如每个用户控件连接到数据库)都会导致性能问题......例如,如果只有一个用户控制回发做某事,那么所有其他用户的处理,有些是可见的,有些则不是...... @ David McEwing提到他有40个优化的用户控件执行等,但如果开发人员是基于WinForms或"不熟悉asp.net",那么他们如何确保每个人都得到优化......
EDIT2
获取sql语句跟踪后,对于每个事件,每个页面调用执行相同的数据调用5-6次,因为不同的用户控件需要通常不存储的数据,例如选项卡中的每个用户控件(如上所述)从数据库中填充一个对象的同一个调用...我真的不是在这里指责用户控制是问题(我应该删除问题吗?),因为很明显问题不是用户控件,而是使用它们这个特殊情况......我认为这是过分的!
所以这是交易 - 我正在使用AJAX通过XML文件加载页面内容.内容正确加载,没有问题.但是,当我加载一段特定的HTML时,Firebug会将其显示为灰色,我在网上看到这意味着它在页面本身不可见,这在我的情况下是正确的 - 我在页面上看不到div .问题是,为什么这件作品变灰了???? 请帮忙!!我完全陷入了困境!
来自Firebug的HTML屏幕截图如下.接近底部通知有两个灰色的div.提前致谢
我正在使用Nhibernate作为asp.net应用程序的OR/M工具,启动性能非常令人沮丧.问题的一部分肯定是我缺乏理解,但我已经尝试了一点(理解肯定在改善),我仍然无处可去.
目前,ANTS分析器的配置()需要13-18秒,而BuildSessionFActory()大约需要5秒.根据我的阅读,这些时间实际上可能相当不错,但他们通常会谈论数百个映射实体......这个项目只有10个.
我已将所有映射文件合并到一个hbm映射文件中,这确实改进了一些事情,但仅限于上述时间......
我想,有没有经常错过的"年轻球员的陷阱"......很明显"我做了这个/你启用了/排除文件x /标记文件y为z"等...
我将尝试序列化配置事物以避免Configure()阶段,但我觉得那部分实体的部分不应该那么长,因此基本上会隐藏当前的问题......
如有必要,我会发布源代码或配置,但我不确定要放入什么...
谢谢堆!
编辑(更多信息)
我还要补充一点,一旦完成,每页都非常快......
配置代码 - hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string_name">MyAppDEV</property>
<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<property name="cache.use_second_level_cache">true</property>
<property name="show_sql">false</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="current_session_context_class">managed_web</property>
<mapping assembly="MyApp.Domain"/>
</session-factory>
</hibernate-configuration>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我的SessionManager类,它在每个请求的HttpModule中绑定和解除绑定
Imports NHibernate
Imports NHibernate.Cfg
Public Class SessionManager
Private ReadOnly _sessionFactory As ISessionFactory
Public Shared ReadOnly Property SessionFactory() As ISessionFactory
Get
Return Instance._sessionFactory
End Get
End …Run Code Online (Sandbox Code Playgroud) 以下jQuery在我的Firefox中运行良好,但在IE6中失败:
$("<map></map>").attr("name",somevar).appendTo("#someElement");
Run Code Online (Sandbox Code Playgroud)
问题是map元素永远不会获得我可以通过调用证明的name属性,alert($("#someElement").html());以及与之关联的图像没有其链接的事实
如果我使用它,它工作正常:
$("<map name='" + somevar + "'></map>").appendTo("#someElement");
Run Code Online (Sandbox Code Playgroud)
我很高兴使用第二行代码,但是想知道是否有其他人遇到过这个问题...或解释为什么它不起作用(我想知道它是特定于name属性的). ..
(第一和第二种情况的HTML输出):
IE6使用第一行:
<MAP><AREA shape=RECT coords=0,0,300,110 href="http://google.com"></MAP><IMG height=215 src="include/nav-images/main.png" width=591 useMap=#tehmap>
Run Code Online (Sandbox Code Playgroud)
IE6使用第二行:
<MAP name=tehmap><AREA shape=RECT coords=0,0,300,110 href="http://google.com"></MAP><IMG height=215 src="include/nav-images/main.png" width=591 useMap=#tehmap>
Run Code Online (Sandbox Code Playgroud) 我在asp.net应用程序'内部'工作,并希望使用asp.net mvc,但我无法将我们的应用程序部署到不受我们控制的Web服务器,目前只有.net framework v2和IIS6.除了没有时间/金钱用于转换当前的WebForms应用程序之外......
所以任何帮助我创建更好的WebForms asp.net应用程序的信息都会非常感激...我已经从MVC人员那里读到了关于WebForms的"糟糕的"列表,肯定有解决方案/解决方案来制作WebForms"不那么糟糕"......
我理解的东西可以改进(但需要帮助):
<span><asp:literal /></span>而不是asp:标签(我们从不使用服务器端控件的样式属性,但主要使用CssClass属性将CSS保存在CSS文件中)我并不真正关心整齐格式化的URL作为其基于内部网的(并且非常无关紧要)和SEO无关紧要......即使MVC网址看起来很棒......
同样,任何帮助,资源,代码示例或任何其他将是真棒!谢谢堆.
使用内联写入标记而不是资源标记之间是否有任何优势/缺点?例:
<%=Resources.Site.SampleString %>
Run Code Online (Sandbox Code Playgroud)
在任何MSDN示例中看到的资源标记(表达式标记):
<asp:Literal id="Literal1" runat="server" text="<%$ Resources:Site, SampleString %>" />
Run Code Online (Sandbox Code Playgroud)
我发现第一个选项更容易使用,它有智能感知,但也许它的功能不一样?
asp.net ×5
html ×2
jquery ×2
architecture ×1
asp.net-mvc ×1
c# ×1
doctype ×1
firebug ×1
html-encode ×1
nhibernate ×1
optimization ×1
performance ×1
structuremap ×1
trace ×1
unit-testing ×1
vb.net ×1
webforms ×1
wpf ×1
wpfdatagrid ×1