我在代码中实现了一个自定义的Profile对象,如Joel所述:
但是,当我创建一个新用户时,我无法让它工作.当我这样做:
Membership.CreateUser(userName, password);
Roles.AddUserToRole(userName, "MyRole");
Run Code Online (Sandbox Code Playgroud)
用户是创建并添加到数据库中的角色,但HttpContext.Current.User仍然是空的,并Membership.GetUser()返回null,所以这(从Joel的代码)不起作用:
static public AccountProfile CurrentUser
{
get { return (AccountProfile)
(ProfileBase.Create(Membership.GetUser().UserName)); }
}
AccountProfile.CurrentUser.FullName = "Snoopy";
Run Code Online (Sandbox Code Playgroud)
我尝试过这样调用Membership.GetUser(userName)和设置Profile属性,但是set属性保持为空,并且调用AccountProfile.CurrentUser(userName).Save()不会在数据库中放置任何内容.我也试着指示用户是有效的和登录,通过调用Membership.ValidateUser,FormsAuthentication.SetAuthCookie等等,但是当前用户仍然是空的或匿名的(根据我的浏览器的cookie的状态).
解决(进一步编辑,见下文):根据Franci Penov的解释和一些更多实验,我找出了问题.Joel的代码和我尝试的变体只适用于现有的个人资料.如果不存在Profile,ProfileBase.Create(userName)则每次调用时都会返回一个新的空对象; 您可以设置属性,但它们不会"粘住",因为每次访问时都会返回一个新实例.设置HttpContext.Current.User一个新的GenericPrincipal 将会给你一个User对象,但没有一个Profile对象,ProfileBase.Create(userName)并且HttpContext.Current.Profile仍将指向新的,空的对象.
如果要在同一请求中为新创建的用户创建配置文件,则需要调用HttpContext.Current.Profile.Initialize(userName, true).然后,您可以填充初始化的配置文件并保存它,并且可以在将来的请求中按名称访问它,因此Joel的代码将起作用.我只在HttpContext.Current.Profile内部使用,当我需要在创建时立即创建/访问配置文件.在任何其他请求,我使用ProfileBase.Create(userName),并且我只公开该版本.
请注意,Franci是正确的:如果您愿意创建用户(和角色)并在第一次往返时将其设置为Authenticated,并要求用户再登录,您将能够更简单地访问该配置文件通过Joel的代码来处理后续请求.让我感到震惊的是,Roles可以在用户创建时立即访问,无需任何初始化,但Profile不是.
我的新AccountProfile代码:
public static AccountProfile CurrentUser
{
get
{
if (Membership.GetUser() != null)
return ProfileBase.Create(Membership.GetUser().UserName) as …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,当你启动它时会要求输入PIN码.那不是很好,但我可以忍受它.问题是,每次手机从睡眠状态唤醒时,我都会被要求提供PIN码.结合操作系统要求输入密码,这太过分了.
有没有合法的方法来检测手机是否有唤醒所需的密码,所以在这种情况下我可以跳过要求PIN码?我不想知道PIN,我实际上并不关心它是否被锁定(例如,如果电话非常短暂地睡着了),我只想知道数据在某种程度上是"受保护的".
我想使用ggplot图形从R中的函数中生成几个图形窗口...
testf <- function(a, b) {
devAskNewPage(TRUE)
qplot(a, b);
# grid.newpage(recording = TRUE)
dev.new()
qplot(a, a+a);
# grid.newpage(recording = TRUE)
dev.new()
qplot(b, b+b);
}
library(ggplot2)
x <- rnorm(50)
y <- rnorm(50)
testf(x, y)
Run Code Online (Sandbox Code Playgroud)
但是,dev.new()和grid.newpage()似乎都没有刷新前面的情节.
我知道,在R中,函数通常只生成他们评估的最后一件事,但我想更好地理解这个过程并了解任何可能的解决方法.
思考?
构建和接受iPad和iPhone的通用应用程序的设置是什么?
也就是说,Project X Info> Build for中的设置是什么
我们在下拉列表中选择什么(Device - 3.2 | Distribution | armv?)?
我们要么在构建时收到警告,而我们还没有为armv7构建警告,或者应用程序上传被拒绝了
"您上传的二进制文件无效.支持iPhone时,可执行文件必须包含对armv6架构的支持".
谢谢您的帮助.
我正在尝试优化一些非常复杂的SQL查询,因为它需要很长时间才能完成.
在我的查询中,我动态创建了具有许多相同函数的SQL语句,因此我创建了一个临时表,其中每个函数只调用一次而不是多次 - 这将我的执行时间缩短了3/4.
所以我的问题是,如果1000个日期计算的范围缩小到100,我可以期待看到很多不同吗?
编辑:查询如下所示:
SELECT DISTINCT M.MID, M.RE FROM #TEMP INNER JOIN M ON #TEMP.MID=M.MID
WHERE ( #TEMP.Property1=1 ) AND
DATEDIFF( year, M.DOB, @date2 ) >= 15 AND DATEDIFF( year, M.DOB, @date2 ) <= 17
Run Code Online (Sandbox Code Playgroud)
其中这些是作为字符串动态生成的(按位组合在一起)然后执行,以便可以在每次迭代时更改各种参数 - 主要是最后一行,包含各种DATEDIFF查询.
像这样的大约420个查询,这些日期计算是这样计算的.我知道我可以轻松地将它们全部放入临时表(1000个日期变为50) - 但它是否值得,它会在几秒钟内产生任何差异吗?我希望能比十分之一秒更好地改进.
根据这篇文章,可以获得多行XML注释 - 而不是使用///,使用/** */.这是我对多行注释的解释,以及我想要发生的事情:
/**
* <summary>
* this comment is on line 1 in the tooltip
* this comment is on line 2 in the tooltip
* </summary>
*/
Run Code Online (Sandbox Code Playgroud)
但是,当我使用这个表单时,当我将鼠标悬停在我的代码中时弹出的工具提示是单行的,即它看起来就像我写了这样的评论:
/// <summary>
/// this comment is on line 1 in the tooltip
/// this comment is on line 2 in the tooltip
/// </summary>
Run Code Online (Sandbox Code Playgroud)
这种行为实际上是否仍然可以在VS2008中使用?
编辑
gabe指出我误解了"多线"意味着什么,我实际上需要使用<para>或<br>获得我想要的效果.我继续使用,<br>因为我想控制断线发生的位置,即
/// <summary>
/// this comment is on line 1 in …Run Code Online (Sandbox Code Playgroud) 我目前正在使用BlueCloth在Ruby中处理Markdown并将其显示为HTML,但在一个位置我需要它作为纯文本(没有一些Markdown).有没有办法实现这一目标?
是否有降价到纯文本的方法?是否有一个html到纯文本的方法,我可以感受到BlueCloth的结果?
char arr[]= "\xeb\x2a";
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这些都是一样的:
"\xeb\x2a" VS '\xeb\x2a'
在构造函数中,指定的最终对象字段是否仍然为空?
class MyClass {
private final Object obj = new Object();
public MyClass() {
System.out.println(obj); // may print null?
}
}
Run Code Online (Sandbox Code Playgroud)
如果是的话,这不是一个错误吗?
查看Chrome和Firefox中的http://demo.neeraj.name/admin_data.在Firefox中,选择框具有较大的高度.在Chrome中,选择框的高度非常小.
如何让chrome和safari的选择框看起来像Firefox的选择下拉?