我正在尝试使用FormsAuthentication(使用ASP.NET MVC2)并且它运行得相当好.
但是,我无法弄清楚如何处理的一个案例是验证服务器上的用户身份,以确保从服务器的角度来看它仍然有效.
例如.
我可以发现这很好,但处理它的正确方法是什么?呼吁FormsAuthentication.SignOut在OnAuthorization对OnActionExecuting事件太晚影响当前请求.
或者,我希望能够在删除用户(或重新创建数据库)时调用FormsAuthentication.InvalidateUser(...),以使给定(或所有)用户的所有票证无效.但我找不到一个API来做到这一点.
更新 ASP.NET MVC的发布位中不存在此问题
我有一个ASP.NET MVC RC应用程序在http:// localhost:9002 /运行的调试器下运行正常 但是当我将它发布到http:// localhost/Zot /时,对Url.Content的调用返回的值不正确.
我有脚本标签
<script src="<%= Url.Content("~/Scripts/util.js") %>" ...
Run Code Online (Sandbox Code Playgroud)
在发布的网站中,这会产生:
<script src="Zot/Scripts/util.js" ...
Run Code Online (Sandbox Code Playgroud)
代替
<script src="/Zot/Scripts/util.js" ...
Run Code Online (Sandbox Code Playgroud)
要么
<script src="Scripts/util.js" ...
Run Code Online (Sandbox Code Playgroud)
我有样式表标签,如:
<link href="~/Content/Site.css" runat="server" ...
Run Code Online (Sandbox Code Playgroud)
这产生了正确的事情:
<link href="Content/Site.css" ...
Run Code Online (Sandbox Code Playgroud)
关于为什么Url.Content失败的任何建议.我显然不能runat="server"在<script>标签上放一个.
我有一个表示堆栈帧的(64位)地址列表,我想将这些地址哈希到一个64位数字,以帮助识别以前见过的那些.最多有128个地址.
我当前的算法通过迭代列表来计算哈希值,将每个地址与哈希值进行对比,并将每个周期的哈希值旋转11位.
有更好的建议吗?
我本质上有以下代码:
typedef std::function<void ()> fnGlobalChangeEvent;
typedef std::vector<fnGlobalChangeEvent> GlobalTriggers;
inline void ExecuteGlobal(fnGlobalChangeEvent ev)
{
ev();
}
GlobalTriggers triggers;
std::for_each(triggers.begin(), triggers.end(), std::bind(&ExecuteGlobal, _1));
Run Code Online (Sandbox Code Playgroud)
在这里使用ExecuteGlobal感觉完全是多余的,但我找不到正确的语法来退出调用.
std::for_each(triggers.begin(), triggers.end(), ExecuteGlobal(_1));
std::for_each(triggers.begin(), triggers.end(), std::bind(_1));
Run Code Online (Sandbox Code Playgroud)
两者都无法编译.
还有一个更复杂的案例:
typedef std::function<void (Zot&)> fnChangeEvent;
typedef std::vector<fnChangeEvent> Triggers;
inline void Execute(fnChangeEvent ev, Zot& zot)
{
ev(zot);
}
Triggers triggers;
std::for_each(triggers.begin(), triggers.end(), std::bind(&Execute, _1, zot));
Run Code Online (Sandbox Code Playgroud)
在这些情况下,是否可以不使用辅助函数?
以下代码无法在VS2012中编译
class Zot
{
public:
int A() { return 123; }
};
int _tmain(int argc, _TCHAR* argv[])
{
std::function<int (Zot*)> fn = &Zot::A;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,将分配更改为
std::function<int (Zot*)> fn = std::bind(&Zot::A, std::placeholders::_1);
Run Code Online (Sandbox Code Playgroud)
有用吗
有很多在线示例显示原始语法.在C++ 11规范中有什么变化来禁止这种语法吗?
是否有有效的简短表格?
编辑:编译器错误(为可重复性稍加编辑)是:
1>vc\include\functional(515): error C2664: 'std::_Func_class<_Ret,_V0_t>::_Set' : cannot convert parameter 1 from '_Myimpl *' to 'std::_Func_base<_Rx,_V0_t> *'
1> with
1> [
1> _Ret=int,
1> _V0_t=Zot *
1> ]
1> and
1> [
1> _Rx=int,
1> _V0_t=Zot *
1> ]
1> Types pointed to …Run Code Online (Sandbox Code Playgroud) 我想用来hg graft将变更集从一个分支复制到另一个分支.
但是,在变量集中修改的文件已hg rename在源分支中重命名(使用) - 在我要移植的变更集之前.
当我尝试时,我得到:
scanning for duplicate grafts
grafting revision 3
searching for copies back to rev 2
unmatched files in local:
f1.txt
resolving manifests
overwrite: False, partial: False
ancestor: c06936303423, local: cfeaa3003c57+, remote: e3f2a201d1e2
remote changed f1a.txt which local deleted
use (c)hanged version or leave (d)eleted? c
Run Code Online (Sandbox Code Playgroud)
(c)和(d)都不是正确的选择.
文件f1a.txt已从源分支中的f1.txt重命名.f1a.txt甚至从未存在于目标分支中.
这可能吗?
在keypress运行事件侦听器的网页上,我希望能够测试发送击键.但该页面没有输入元素和调用
driver.FindElement(By.XPath("//body")).SendKeys("abc");
Run Code Online (Sandbox Code Playgroud)
引发关于需要元素可编辑以接受击键的错误(针对Chrome).
有没有办法生成击键,以便页面看到它们而不注入虚拟输入元素?
我在Web应用程序中使用ASP.NET MVC和JQueryMobile.我想生成一个链接:
<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>
Run Code Online (Sandbox Code Playgroud)
我有一个帮助扩展方法,让我做:
<%= Html.ActionLink<WhateverController>(c => c.Previous(),
"Previous",
new { data-role = "button", data-icon="arrow-l" } ) %>
Run Code Online (Sandbox Code Playgroud)
Ccept 中的属性名除外data-role且data-icon无效.使用@data-role也不起作用.
有什么语法可以解决这个问题吗?或者我仍然坚持创建一个更专业的帮助器,知道正确的属性名称.
我正在看一些javascript代码,它有一个函数:
$$('.CssClass').each(function(x) { .... } )
Run Code Online (Sandbox Code Playgroud)
我得到的意图是使用一个CssClass类将匿名函数应用于每个元素,但我无法工作$$引用的...并且不能google for $$!
更新:感谢提示.javascript来自iPhone外观相似的库:jPint包含prototypejs库,并将$$定义为:
function $$() {
return Selector.findChildElements(document, $A(arguments));
}
Run Code Online (Sandbox Code Playgroud) 我试图获得更多'功能'的STL编程风格,并有以下简化的案例
class Widget;
class Zot
{
public:
std::vector<Widget> Widgets;
void ProcessAWidget(int x, Widget w) { ... }
void Process()
{
int ctx=123;
std::for_each(Widgets.begin(), Widgets.end(),
std::bind(&Zot::ProcessAWidget, this, ctx, _1));
}
};
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来编写for_each调用的最后一个参数?
特别是必须明确提到这种感觉"错误",并且放弃类限定符也会很好.
有没有一种简单的方法可以找到通过WinDbg生成用户模式转储文件的机器的主机名?
或至少任何一条识别信息,以尝试确认两个转储文件来自同一系统.
c++ ×3
asp.net ×2
asp.net-mvc ×2
c# ×2
c++11 ×2
algorithm ×1
crash-dumps ×1
debugging ×1
hash ×1
javascript ×1
mercurial ×1
parsing ×1
prototypejs ×1
selenium ×1
std ×1
stl ×1
unit-testing ×1
visual-c++ ×1
webdriver ×1
windows ×1