在我的ASP.Net MVC应用程序中,我实现了一个Custom ActionFilter来授权用户.
我使用CastleWindsor为所有控制器提供依赖注入,如下所示:
protected virtual IWindsorContainer InitializeServiceLocator()
{
IWindsorContainer container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));
container.RegisterControllers(typeof(HomeController).Assembly);
ComponentRegistrar.AddComponentsTo(container);
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
return container;
}
Run Code Online (Sandbox Code Playgroud)
在我的CustomAttribute中,我需要一个由我的所有控制器使用的依赖项,但是我无法在属性中使用基于构造函数的注入.
那么这里最干净的方法是什么?我该如何提供依赖?
c# asp.net-mvc dependency-injection castle-windsor action-filter
我有一位同事在他的CSS中使用了很多绝对定位.
我发现通常可以通过为html提供不同的结构来实现相同的视觉效果 - 实际上我倾向于避免使用绝对定位,除非我绝对需要.
问题 - 我的直觉在这里听起来除了css复杂性之外,是绝对定位要谨慎使用的东西吗?
我的查询如下;
SELECT COUNT(Id) FROM Table
Run Code Online (Sandbox Code Playgroud)
该表包含3300万条记录 - 它包含Id上的主键,没有其他索引.
查询需要30秒.
实际执行计划显示它使用聚簇索引扫描.
我们已经分析了该表,发现它没有使用此链接中显示的第一个查询进行分段:http://sqlserverpedia.com/wiki/Index_Maintenance.
关于为什么这个查询如此缓慢以及如何解决它的任何想法.
表定义:
CREATE TABLE [dbo].[DbConversation](
[ConversationID] [int] IDENTITY(1,1) NOT NULL,
[ConversationGroupID] [int] NOT NULL,
[InsideIP] [uniqueidentifier] NOT NULL,
[OutsideIP] [uniqueidentifier] NOT NULL,
[ServerPort] [int] NOT NULL,
[BytesOutbound] [bigint] NOT NULL,
[BytesInbound] [bigint] NOT NULL,
[ServerOutside] [bit] NOT NULL,
[LastFlowTime] [datetime] NOT NULL,
[LastClientPort] [int] NOT NULL,
[Protocol] [tinyint] NOT NULL,
[TypeOfService] [tinyint] NOT NULL,
CONSTRAINT [PK_Conversation_1] PRIMARY KEY CLUSTERED
(
[ConversationID] ASC
)WITH (PAD_INDEX = …
Run Code Online (Sandbox Code Playgroud) 我有一个VBScript应用程序,可以创建符号链接.
Set wshell = CreateObject("WScript.Shell")
.....
linkcmd = "mklink /D """ & linkFolderPath & "\" & linkName & """ """ & libfolder & "\" & folderName & """"
cmd = "cmd /C " & linkcmd
wshell.Run cmd, 4, true
Run Code Online (Sandbox Code Playgroud)
这很好并且有效,但是当我创建了很多链接时,每次执行wshell.Run
命令都会导致出现一个瞬态控制台窗口并立即消失.
反正有没有阻止控制台窗口如此明显地创建?
我正在编写某种WCF服务.大多数异常都在BL实现中捕获并在那里处理.我的每个API的返回类型都是一个包含错误代码,错误消息和成功布尔值的类(命名为"结果").
处理异常时,此类会相应更新,最后会发送回客户端.一些例外是非正式的,未处理的.目前,我使用通用try-catch从服务层包装每个BL调用,因此我可以捕获每个未处理的异常并创建一个通用的"result"类,其中包含一般的失败消息,错误代码和success = false.
这是处理异常的好方法,还是应该让服务抛出未处理的异常给客户端?您可以假设客户端无法使用异常中的数据,因此不会从异常中包含的额外信息中受益.
我昨晚和一位同事交谈,jQuery出现了 - 他从来没有遇到jTemplates或曾经考虑过可能存在的东西......
它让我思考 - jQuery中存在多少其他非常有用的功能,因为存在完全可维护的替代品而未被使用?
我希望这个问题不会被关闭 - 我知道它不遵循现代Stack-Overflow QA范例,但我认为它可以形成一个有用的资源,这样的问题曾经是常见的,所以C#,javascript等有类似的产品.
我将从明显的开始:
选择者需要我说更多?
外观修改器 - 可以轻松应用于DOM元素的各种视觉效果.看到这里.
jQuery UI与ThemeRoller一起使用特别有用.还有许多小部件和交互.到目前为止,我只使用了Dialogue和Slider控件,两者都表现出色.看到这里.
.ajax和它的变种(.get(),. load()等) - 承担了制作ajax请求的所有痛苦.看到这里.
.live将事件处理程序附加到现在和将来与选择器匹配的所有元素!天才!看到这里.
jTemplates - 替代jQuery.tmpl()函数,这个插件允许您创建功能强大的html模板,用于呈现客户端数据.看这里.
qTip2 - 仍处于正式测试阶段,但这个插件只是创建工具提示的最佳选择.看到这里.
延迟 - 管理异步代码的一种干净而明智的方法.请参阅此处获取基本信息和更多链接.
请添加我错过的任何内容,我会相应更新我的列表.
我正在尝试根据以下(简化)规则对项目列表进行排序:
我将每个项目具有以下属性:
Id (int),
ParentId (int?),
Name (string)
Run Code Online (Sandbox Code Playgroud)
ParentID是Id的自联接ForeignKey.如果项目具有ParentId,则父项也将存在于列表中.
我需要对列表进行排序,以便所有具有父项的项目立即显示在其父项之后.然后所有项目将按名称排序.
如果我有以下内容:
Id: 1, ParentId: null, Name: Pi
Id: 2, ParentId: null, Name: Gamma
Id: 11, ParentId: 1, Name: Charlie
Id: 12, ParentId: 1, Name: Beta
Id: 21, ParentId: 2, Name: Alpha
Id: 22, ParentId: 2, Name: Omega
Run Code Online (Sandbox Code Playgroud)
然后我希望它们排序如下:
Ids:2,21,22,1,12,11
目前,我能想到的最好的方法是首先按名称排序,然后按父母排序按如下方式排序:
var sortedItems = itemsToSort.OrderBy(x=> x.Name).GroupBy(x=> x.ParentId);
Run Code Online (Sandbox Code Playgroud)
我的起始计划如下:(在非功能代码中)
var finalCollection = new List<Item>
var parentGroup = sortedItems.Where(si => si.Key == null);
foreach(parent in parentGroup)
{
finalCollection.Add(parent);
foreach(child in sortedItems.Where(si => si.Key …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Knockout.js合并到WebApplication中.
我基于我的大部分代码的教程都在这里.
基本上 - 我有一个项目列表 - 我希望能够单击一个项目并让相应的数据显示在页面底部的div中.最终我将使用jquery.UI Dialog插件将此div转换为弹出窗口,但是现在,我只是想让selectedItem工作.
我的(简化)代码在这里:http://jsfiddle.net/fZXAX/1/
我只是得到错误: actionListViewModel.selectedActionId不是一个函数.
我没有看到这个与以相同方式使用selectedMailId的教程之间的区别.我的代码和示例之间的唯一区别是我没有使用文字表示法.
任何人都可以看到我错在哪里?提前致谢.
我想使用的方法从这个文章,但我失去了一些东西-我目前得到内WindsorControllerFactory.GetControllerInstance一个错误,当它试图解决IActionInvoker因为WindsorActionInvoker对IWindsorContainer的依赖.
鉴于WindsorControllerFactory已经有对IWindsorContainer的引用,我可以传入该引用吗?如果是这样 - 怎么样?我发现的唯一示例是将值类型作为构造函数参数传递,而不是引用类型.
我觉得我错过了一些明显的东西......
当前设置如下:在Global.asax Application_Start中我调用以下方法:
protected virtual IWindsorContainer InitializeServiceLocator()
{
IWindsorContainer container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));
container.RegisterControllers(typeof(HomeController).Assembly);
ComponentRegistrar.AddComponentsTo(container);
return container;
}
Run Code Online (Sandbox Code Playgroud)
ComponentRegistrar:
public static void AddComponentsTo(IWindsorContainer container)
{
//add other components.....
container.AddComponentLifeStyle<IActionInvoker, WindsorActionInvoker>(LifestyleType.PerWebRequest);
}
Run Code Online (Sandbox Code Playgroud)
WindsorActionInvoker:
public class WindsorActionInvoker : ControllerActionInvoker, IActionInvoker
{
readonly IWindsorContainer container;
public WindsorActionInvoker(IWindsorContainer container)
{
this.container = container;
}
protected override ActionExecutedContext InvokeActionMethodWithFilters(
ControllerContext controllerContext,
IList<IActionFilter> filters,
ActionDescriptor actionDescriptor,
IDictionary<string, object> parameters)
{
foreach (IActionFilter actionFilter in filters)
{
container.Kernel.InjectProperties(actionFilter);
} …
Run Code Online (Sandbox Code Playgroud) 我们目前正在考虑从TFS迁移到SVN.
我之前使用过基于Linux服务器的SVN,但是我们没有Linux机箱,也没有Linux技能,所以我们正在考虑使用VisualSVN Server.
主要问题是:
1)VisualSVN服务器:基础还是企业?我们是一个小团队,所以我认为Basic应该足够好.
2)Bugzilla集成 - 我之前发现这非常宝贵 - 将它与Visual SVN集成的任何问题?
还有更好的选择吗?
更新:
我发现这个网站提供了一些安装帮助 - 如果有更简单的选择,问题仍然存在.
我有一个Asp.Net MVC webapplication坐在一个仍然主要由delphi管理的网站中.安全性目前由delphi管理,它创建cookie.
已经决定通过提取cookie详细信息并将它们传递给导入的Delphi DLL来验证ASP.Net应用程序中的用户,该DLL根据用户是否有效返回true或false.
我的计划是使用Forms身份验证,但不是将用户重定向到表单而是调用delphi包装器,如果成功,则将用户重定向到原始URL.这样做的好处是,当安全性迁移到.Net时,身份验证框架已经存在,只需要实现更改即可.
public ActionResult LogOn(SecurityCookies model, string returnUrl)
{
try
{
if (model != null)
{
Log.DebugFormat("User login: Id:{0}, Key:{1}", model.UserId, model.Key);
if (authenticator.UserValid(model.UserId, model.Key, 0))
{
FormsService.SignIn(model.UserId, false);
return Redirect(returnUrl);
}
}
...
Run Code Online (Sandbox Code Playgroud)
请注意,SecurityCookies是由delphi生成的cookie中的自定义绑定类生成的 - 这很有效.
对delphi dll的调用也可以.
我必须克服的问题是几乎所有对.Net应用程序的调用都是ajax请求.但是,当用户未登录时,浏览器会因重定向而进行3次调用:1)原始ajax请求2)重定向到〜/ Account/Logon(上面的代码)3)重定向回原来的ajax请求
虽然跟踪回发给客户端的响应,但显示步骤3返回正确的数据,整个过程因尚未确定的原因而失败.只需单击客户端上的刷新即可,因为现在用户已通过身份验证,并且不会重定向到〜/ account/Logon.
注意我的客户端jQuery代码如下:$ .getJSON(requestString,function(data){//对数据执行某些操作});
有没有办法更改窗体身份验证过程,以便在用户未经过身份验证时,而不是重定向到Url,我可以运行其他一些代码?我希望身份验证已经发生在用户的浏览器中完全不可见.
我不确定这是否会成为编程问题 - 这实际上取决于我猜的答案.
我有一个命令行实用程序,可以通过删除文件来触发它.
发生这种情况时,基本上会触发该过程:
myUtility.exe Filepath/FileName.xyz
Run Code Online (Sandbox Code Playgroud)
我想保留拖放功能,但包含一组固定的选项:
myUtility.exe Filepath/FileName.xyz -f -g
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
请注意,唯一的变量是已删除文件的文件路径/文件名.我无法修改utility.exe本身.
我想知道是否可以创建一个批处理文件作为中间人,以便将文件放到导致批处理文件的快捷方式上,这将捕获丢弃的文件名然后调用utility.exe用文件名添加所需的选项.
c# ×4
asp.net-mvc ×2
jquery ×2
ajax ×1
asp.net ×1
batch-file ×1
bugzilla ×1
css ×1
exception ×1
javascript ×1
knockout.js ×1
sql ×1
svn ×1
tfs ×1
vbscript ×1
wcf ×1
windows ×1