问题列表 - 第10808页

为什么在刷新浏览器时Application_BeginRequest()会触发两次?

我在Global.asax文件中(在ASP.NET MVC应用程序中)使用Application_BeginRequest事件观察到一些非常令人困惑的行为.当通过调试器运行时,如果我刷新浏览器(IE7),此事件将触发两次.如果我单击链接或以其他方式手动请求页面,它会触发一次 - 如预期的那样.

为什么刷新导致BeginRequest触发两次?

我正在通过一个全新的MVC项目来观察这一点,其中以下内容被加入到Global.asax.cs中

protected void Application_BeginRequest() { 
    //executed twice
}
Run Code Online (Sandbox Code Playgroud)

对于上下文,我试图在此事件期间向HttpContext.Current.Items集合添加一个新对象,因此它将在整个请求过程中持续存在.显然,我不希望这次刷新请求发生两次!

asp.net

6
推荐指数
1
解决办法
5826
查看次数

PHP会话变量 - 消失并重新出现

我有一个模板文件,其中包含我的页眉,页脚和常用信息.它包括当前页面的适当内容(两步视图模式).

我正在尝试使用PHP Session变量建立登录系统.我可以设置变量,有时它们可​​以工作,但有时它们会消失.点击链接有时会让他们回来.

我的网站

登录

用户名:测试密码:test

还有var_dumpssession_id,并$_SESSION在顶部.

点击主页.如果会话变量消失,请单击home(可能需要多达10次)以查看会话信息.单击其他导航,有时会话信息会粘在一起,有时则不会.

这是我的模板文件顶部的会话代码.

<?php
session_start();

require './classes/DBInterface.php';
$db = new DBInterface();

if($_REQUEST['submit']  ==  'Login') {
    $username=$_POST['username'];
    $password=$_POST['password'];

    echo '-- login -- '.$username;
    $rs = $db->verify($username,$password,"admin",0);
    $admin = $rs->current();
    if ($rs->valid()) {
        $_SESSION['username'] = $username;
    }
}

echo ' -- session id -- ';
var_dump(session_id());
echo ' -- session var -- ';
var_dump($_SESSION);
Run Code Online (Sandbox Code Playgroud)

我使用的是PHP5.

php

7
推荐指数
1
解决办法
1654
查看次数

.NET单元测试 - 在发布代码中隐藏测试接缝的最佳实践

我正在寻找一些关于单元测试的建议,其方式是不要在生产代码中留下"测试钩子".

假设我有一个名为MethodLogger的静态类(VB.NET模块),它有一个"void WriteEntry(string Message)"方法,用于将调用方法和消息写入磁盘上的日志文件.WriteEntry()的实际目标可以转移到IMethodLogger的伪实现以运行单元测试,对于所有其他情况,它应该调用IMethodLogger的实际实现.

这是我到目前为止所提出的内容的粗略描述,我喜欢这种方法 - 但在一些快速测试中它提出了一些问题和怀疑:

[InternalAttributesVisibleTo("MethodLogger.Tests")]
internal static class MethodLogger
{
    public void WriteEntry(string message)
    {
        LogWriter.WriteEntry(message);
    }

    private IMethodLogger LogWriter
    {
        get;
        set;
    }

#if DEBUG
    internal void SetLogWriter(IMethodLogger logger)
    {
        LogWriter = logger;
    }
#endif
}
Run Code Online (Sandbox Code Playgroud)

这是我的具体问题:

  • 这将单元测试与DEBUG构建的运行紧密结合在一起; 当我运行单元测试时虽然它似乎没有专门重建DEBUG中的测试组件 - 是否可以这样做?

    • 我是否想要针对非调试版本运行单元测试?在我的头顶,我看到的价值较低 - 但会有吗?
  • 我可以使用像"TEST"这样的自定义预编译器标志来代替"DEBUG"吗?我将如何告诉Visual Studio始终使用此标志重建目标进行测试以确保我的钩子/接缝可用?

.net unit-testing visual-studio

5
推荐指数
1
解决办法
2172
查看次数

生成代码的价值是否如此灵活,以至于永远不需要更新?

我目前正与我的同事讨论如何设计一个将由我的部门使用的API.具体来说,我的任务是编写一个API,作为访问Active Directory信息的包装 外观 - 根据我公司/部门的需求量身定制.我知道开源封装 外墙已经存在,但这不是这个问题的症结所在,仅仅是用来作为一个例子.

当我向我的团队提交我的设计方案时,他们让我失望,因为API不够"可配置".他们声称他们不希望API在"电话号码"和<隐藏电话号码的Active Directory表示>之间建立链接.会议中的每个人(除了我)都同意他们更愿意四处询问"Active Directory中用于用户电话号码的正确字段是什么?",并将其插入各自的应用程序(LOL!).

他们问我,"如果我们公司决定使用不同的字段的电话号码,你不在身边尽在改变你的源代码吗?" 他们最终承认他们害怕改变其他人的源代码,即使代码是原始的并且进行了大量的单元测试.我所在部门的每个高级IT人员都同意这一点.

在设计软件时,这真的是正确的态度吗?!

active-directory

3
推荐指数
2
解决办法
280
查看次数

排除Installshield中动态链接下的文件夹

有没有办法排除位于InstallShield中动态链接下的文件夹?

所以我有一个从PATH A开始的动态链接,以下是一个小例子目录结构:

PATH A
  --- PATH B
        --- PATH C (which contains files)
        --- PATH D (which contains files)

  --- PATH E (which contains files)

  --- PATH F
        --- PATH G (which contains files)
Run Code Online (Sandbox Code Playgroud)

目前我有一个动态链接,从PATH A开始,包括子目录,并使用带有一些显式文件排除的*.*通配符.

我现在要做的是完全排除目录,例如从上面的示例目录结构中完全排除PATH F.

installshield file dynamic-linking

5
推荐指数
1
解决办法
2088
查看次数

加载javassist-ed Hibernate实体

我有一个JSF转换器,我用于包含几种不同实体类型的SelectItem列表.在getAsString()方法中,我创建字符串作为后缀为":"的类名和ID.

MySuperClass superClass = (MySuperClass)value;
if(superClass != null) {
  return String.valueOf(superClass.getClass().getName()+":"+superClass.getId());
}
Run Code Online (Sandbox Code Playgroud)

这允许我getAsObject()通过这样做在从UI返回的路上加载正确的实体:

String className = value.substring(0, value.indexOf(":"));
long id = Long.parseLong(value.substring(value.indexOf(":")+1));
Class<T> entitySuperClass = (Class<T>) Class.forName(className);
MySuperClass superClass = (MySuperClass)getEntityManager().find(entitySuperClass, id);
Run Code Online (Sandbox Code Playgroud)

我的问题是我的实体getAsString()是代理.因此,com.company.MyEntity当我执行getClass().getName()时,我得到的com.company.MyEntity_$$_javassist_48却是失败的find().

有没有办法(除了字符串操作)获取具体的类名(例如com.company.MyEntity)?

谢谢.

java hibernate jpa

5
推荐指数
2
解决办法
1万
查看次数

使用OpenSSL生成密钥的Python RSA解密

有谁知道用Python库导入OpenSSL RSA私钥/公钥(使用密码)并使用它来解密消息的最简单方法.

我看了一下ezPyCrypto,但似乎无法识别OpenSSL RSA密钥,我尝试使用importKey导入密钥,如下所示:

key.importKey(myKey, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)

在我的例子中,myKey是一个以字符串形式表示的OpenSSL RSA公钥/私钥对.

这个有:

必须使用键实例作为第一个参数调用unbound方法importKey()(改为使用str实例)

API文档说:

importKey(self,keystring,**kwds)

有人可以建议我如何阅读使用ezPyCrypto的密钥吗?我也尝试过:

key(key, passphrase='PASSPHRASE')
Run Code Online (Sandbox Code Playgroud)

但是这个:

ezPyCrypto.CryptoKeyError:尝试导入无效密钥,或密码错误

链接到这里的文档:

http://www.freenet.org.nz/ezPyCrypto/detail/index.html

编辑:只是对此的更新.已成功导入RSA密钥,但由于eqPyCrypto不支持AES分组密码,因此解密时遇到实际问题.只是让人们知道.我成功地设法使用ncrypt(http://tachyon.in/ncrypt/)做我想做的事.尽管安装的版本超出了最低要求,由于SWIG和OpenSSL编译问题,我在M2Crypto中遇到了一些编译问题.看起来Python加密/解密框架目前还是一个雷区.哼哼,谢谢你的帮助.

python encryption openssl rsa

4
推荐指数
2
解决办法
8341
查看次数

学习PHP的最佳堆栈是什么?

我打算自学PHP.我想知道我是否应该使用LAMP或Microsoft堆栈.我可以访问这两个.我想知道哪个最容易学,哪个最相关.

php lamp

3
推荐指数
2
解决办法
987
查看次数

如何升级Windows Netbeans的Subversion版本

我安装了Netbeans然后我试图在Netbeans中检查我的项目.在这个过程中,Netbeans告诉我一些旧的客户端版本的subversion,现在我想升级它.但我不知道客户端在哪里,也不知道如何更新它.

顺便说一下,我在同一台机器上安装了TortoiseSVN,并且它在同一个存储库中工作正常,而且当我使用svn + ssh协议时,我将Netbeans配置为使用TortoisePlink.exe.

svn windows netbeans netbeans6.5

6
推荐指数
1
解决办法
6813
查看次数

Type.IsSubclassOf的行为与预期不符

我有一个应用程序,它加载程序集并查找类型,这些类型是应用程序引用的另一个程序集A1中定义的类C1的子类.我在A1中定义了一个类型T,它是C1的子类,但是当我使用Assembly.Load(...)加载A1时,在TI实例上调用t.IsSubclassOf(typeof(C1))得到false.我注意到当前appdomain中有2个程序集A1的实例,如果我从其中一个实例中获取C1类型而不是两个实例,则t.IsSubclassOf(C1)可以工作.我不太明白这种行为,任何人都可以解释一下吗?此外,我如何修复我的应用程序,以便无论是加载A1还是其他程序集来查找C1的子类型?

c# assemblies appdomain .net-3.5

4
推荐指数
1
解决办法
3305
查看次数