我有一个有两名canActivate守卫的路线(AuthGuard和RoleGuard).first(AuthGuard)检查用户是否已登录,如果没有,则重定向到登录页面.第二个检查用户是否具有允许查看页面的角色定义,如果没有,则重定向到未授权页面.
canActivate: [ AuthGuard, RoleGuard ]
...
export class AuthGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
...
this.router.navigate(['/login']);
resolve(false);
}
export class RoleGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
...
this.router.navigate(['/unauthorized']);
resolve(false);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我访问路线并且我没有登录时,我点击了AuthGuard,它失败并告诉路由器导航到/login.然而,即使AuthGuard失败RoleGuard了,然后运行然后导航到/unauthorized.
在我看来,如果第一个失败,那么运行下一个后卫是毫无意义的.有没有办法强制执行此行为?
我有一个应用程序,可以在多个段中写入大文件.我使用FileStream.Seek来定位每个wirte.看来,当我在稀疏文件中的深位置调用FileStream.Write时,write会在所有前面的字节上触发"回填"操作(写入0),这很慢.
有没有更有效的方法来处理这种情况?
以下代码演示了该问题.初始写入在我的机器上大约需要370 MS.
public void WriteToStream()
{
DateTime dt;
using (FileStream fs = File.Create("C:\\testfile.file"))
{
fs.SetLength(1024 * 1024 * 100);
fs.Seek(-1, SeekOrigin.End);
dt = DateTime.Now;
fs.WriteByte(255);
}
Console.WriteLine(@"WRITE MS: " + DateTime.Now.Subtract(dt).TotalMilliseconds.ToString());
}
Run Code Online (Sandbox Code Playgroud) 目前是否可以在我自己的XBOX上测试UWP应用程序(不发布,只在我自己的个人XBOX One控制台上测试)?
基于MS的常见问题解答:http://www.xbox.com/en-US/developers/ID ...
"对于使用通用Windows应用程序的开发人员,您将能够在2015年下半年之后的某个零售Xbox One上测试您的游戏"
但是我找不到任何好的细节来解释在XBOX One上测试/加载应用程序的过程.任何见解将不胜感激.