我有一个我从未遇到过的奇怪错误.
我用以下方法获得了控制器
[Authorize(Roles = "admin")]
public class LoggingController : Controller
Run Code Online (Sandbox Code Playgroud)
当非管理员用户尝试访问任何受保护的内容时,会将其重定向到:
HTTP://本地主机:50501 /帐号/登录RETURNURL =%2flogging
注意:帐户/ 登录和NOT帐户/ 登录
AccountController.Login操作不存在.
web.config有:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
我当然可以实现Login操作并重定向到Logon.我只是感到困惑,想知道为什么会这样.
我很抱歉,如果已经提出这个问题,但我一直在寻找,但我找到的只是相当旧的帖子(mvc1,mvc2).我有一个表格,我想通过Ajax提交.
这看起来会起作用,但不包括服务器端验证.
1)我不确定是否应该使用AjaxHelper.BeginForm或使用原始jquery调用($.ajax)?这里推荐的方法是什么?
2)如何处理客户端和服务器端验证?我希望mvc框架提供一个内置的机制来处理这个?有一些验证我只做服务器端.会不会ValidationSummary在这里使用?
我使用asp.net mvc3/razor与unobtrussive javascript验证.
谢谢!
编辑:(按照Bobby B的要求). 这是在用户想知道如何使用AjaxHelper之后几个月提出问题
这是我使用的javascript代码:
<script type="text/javascript">
function ajaxValidate() {
return $('form').validate().form();
}
function getGbPostSuccess(ajaxContext){
// .... it is not necessary to do anything here.
}
function showFaliure(ajaxContext){
// handle failure
}
Run Code Online (Sandbox Code Playgroud)
HTML片段:
@using (Ajax.BeginForm("Index", "Home", new AjaxOptions
{
UpdateTargetId = "form1",
InsertionMode = InsertionMode.Replace,
OnBegin = "ajaxValidate",
OnSuccess = "getGbPostSuccess",
OnFailure = "showFaliure"
}))
{
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的快递应用程序设置错误处理并遇到以下问题.
我定义了一个错误中间件并将其添加为最后一个中间件:
// error handler
app.use(function(err, req, res, next) {
console.log('JUST TESTING. ERROR HANLDER HAS BEEN CALLED...');
next(err);
});
Run Code Online (Sandbox Code Playgroud)
现在我希望每当发生错误时都会调用这个中间件:
app.get('/datenschutz', function(req, res, next){
return next(new Error('Just testing')); // handle everything here
});
Run Code Online (Sandbox Code Playgroud)
但是我的中间件永远不会被调用!然而,浏览器确实显示堆栈跟踪.这似乎有另一个中间件正在捕获此错误并在我可以对它做任何事情之前对其进行处理.
问题是我不知道可以定义这个中间件的位置,因为我有一个非常简单的设置:
// setup ssl for local testing
var
app = express();
app.
use(express.static(__dirname + '/public')).
use(express.bodyParser()).
use(express.cookieParser());
Run Code Online (Sandbox Code Playgroud)
为什么我的错误处理中间件没有被调用?这种"默认"错误处理在哪里发生?
谢谢!
*编辑* 我看到中间件确实在工作.但是,如果我从另一个中间件函数调用它,就是这种情况.但是,如果在定义为快速路由(GET,POST等)的函数内发生错误,则不会调用它.这很奇怪.如果我将我的错误中间件添加到路由回调中,那么它的工作原理如下:
app.get('/testError', function(req, res, next){
return next(new Error('Just testing')); // handle everything here
}, function(err,req,res,next) {
console.log('This error handler is called!!');
return next();
});
Run Code Online (Sandbox Code Playgroud)
*编辑2 - …
我已经用Delphi编写了一年的代码.但是我对.NET有更多的经验.我正在阅读Nick Hodges的书"编码在Delphi中",他介绍并认可了Spring 4 Delphi框架.
我立即对基于IEnumerable的泛型集合感到兴奋.
然而,我的同事对使用该框架持保留意见.这主要是由于缺乏文档以及Delphi在此继承级别上关于泛型的稳健性/稳定性的一些不安全性.
所以问题.你有什么经历?任何问题?你在生产中使用框架吗?
我们目前仍在XE2上,但预计在未来几个月内转向XE4.
谢谢!
我来自StructureMap世界,在那里永远不需要释放已解析的瞬态对象.
我看到Windsor通过defauly跟踪任何已解决的瞬态对象,因此防止它们被释放之前被垃圾收集(如果它们被释放).
我在文档中找到了NoTrackingReleasePolicy,但不建议使用它.
必须释放任何瞬态对象似乎回到过去.
我将在我的应用程序中使用NoTrackingReleasePolicy.
这样做会让我遇到什么麻烦?或者换句话说,为什么我要手动释放对象而不是让垃圾收集器为我处理?
我有一个C#Library Project.我已经定义了一个条件编译符号:SHOULDWORK

但问题是这个符号没有被定义.我不知道为什么.

这不是一个asp.net项目.我正在使用VS 2013.我在c ++中广泛使用了预处理器定义,所以这对我来说并不是什么新鲜事.但我无法弄清问题是什么.
我尝试重建,重启VS但无济于事.我尝试在同一项目中的不同源文件上使用SHOULDWORK符号,但未定义符号.
救命!!!
正如旁注,DEBUG符号按预期工作.它是为Debug构建定义的,而不是为Release构建定义的.
**编辑
符号正确存储在*.csproj文件中:

**已解决
csproj有几个PropertyGroup条目,其中定义了DefineConstants.我手动将我需要定义的符号添加到那些PropertyGroups然后它工作.似乎项目文件过去是手动编辑的,这可能导致了这一点.它需要清理,但至少现在我可以继续前进.
我正在使用facebook社交小部件的asp.net mvc网站上工作.每当我启动调试器(ie9是浏览器)时,我会收到许多错误弹出窗口:错误:'__flash__removeCallback'未定义.
为了验证我的代码不负责任,我刚刚创建了一个全新的asp.net mvc网站并点击了F5.如果您导航到此URL:http://developers.facebook.com/docs/guides/web/#plugins,您将看到弹出窗口出现.
使用其他浏览器时,弹出窗口不会出现.我在昨天更新到ie9 RTM之前一直在使用最新的ie9 beta,并没有遇到这个问题.
你可以想象它非常烦人......我怎么能阻止那些弹出窗口?别人可以重现这个吗?
谢谢!
我有一个HierarchicalDataTemplate,其中包含一些水平StackPanel中的简单项.上下文菜单也分配给根StackPanel容器:
<HierarchicalDataTemplate DataType="{x:Type data:GroupViewModel}"
ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal" Margin="2" ContextMenuOpening="groupContextMenuOpening">
<StackPanel.ContextMenu>
<StaticResource ResourceKey="groupContextMenu" />
</StackPanel.ContextMenu>
<Rectangle Width="16" Height="15" Fill="{Binding Converter={StaticResource HierarchyLevelConverter}}" Margin="0 0 3 0" Cursor="Hand" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding SetCurrent}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
<Image Width="16" Height="15" Source="{Binding Path=GroupState, Converter={StaticResource GroupStateConverter}}" Cursor="Hand" Margin="0 0 3 0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding ToggleGroupState}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</StackPanel>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
主机TreeView也使用ContextMenu.我们的想法是,如果您右键单击TreeView中的项目,您将获得它的ContextMenu.如果您右键在树视图中的空白区域中进行clik,您将获得具有较少选项的"默认"上下文菜单.
这一切都在解决一个奇怪的问题.如您所见,水平StackPanel在图像之间留下了边距.如果我在项目之间右键单击该空间,则会显示TreeView上下文菜单.我希望我的HierarchicalDataTemplate中定义的ContextMenu会弹出,因为我右键单击StackPanel本身.
我发现,如果我为StackPanel分配背景颜色,那么它可以正常工作,但我希望尽可能避免这种情况.
有任何想法吗?
我已经向几位同事展示了这一点,没有人有解释.我碰巧遇到了这个问题,因为我认为我在代码中发现了一个错误,但是很惊讶地看到代码实际运行了.这是一个简化版本.这是用XE-2完成的.
到目前为止我与之交谈的每个人都期望应该抛出NullReferenceException.
TUnexplainable = class(TObject)
public
function Returns19: Integer;
end;
function TUnexplainable.Returns19: Integer;
begin
Result := 19;
end;
Run Code Online (Sandbox Code Playgroud)
以下测试永远不会有效,但它会成功运行.为什么没有抛出NullReferenceException ????
procedure TTestCNCStep.ShouldNeverEverWorkV4;
var
Impossible: TUnexplainable;
Int1: Integer;
begin
Impossible := nil;
Int1 := Impossible.Returns19; // A Null Reference Exception should ocurr here!!! Instead the method Returns19 is actually invoked!!!!
Check(Int1 = 19);
end;
Run Code Online (Sandbox Code Playgroud)

我正在使用XE-2.
是否可以使用RTTI调用受保护的方法(构造函数)?
我在网上搜索但没有找到任何确凿的答案.据我所知,在XE之前,只有已发布的方法/属性可用.我对私有字段有写访问权限,所以我希望能够调用受保护的方法.
只要构造函数是公共的,以下代码就可以工作.
function GetDefaultConstructor(aRttiType: TRttiType): TRttiMethod;
var
Method: TRttiMethod;
begin
for Method in aRttiType.GetMethods('Create') do
begin
if (Method.IsConstructor) and (length(Method.GetParameters) = 0) and (Method.Parent = aRttiType) then
Exit(Method);
end;
Result := nil;
end;
Run Code Online (Sandbox Code Playgroud) delphi ×3
delphi-xe2 ×3
asp.net-mvc ×2
asp.net-ajax ×1
c# ×1
express ×1
facebook ×1
node.js ×1
spring4d ×1
stackpanel ×1
wpf ×1
xaml ×1