小编sha*_*oth的帖子

ASP.NET MVC 3:您是否可以创建一个ActionFilter来访问请求参数,然后修改它们以适合Action Method签名

我正在尝试将一些安全性/验证日志记录添加到我正在处理的ASP.NET MVC 3应用程序中.我想做的是使用类似于此的Action过滤器来装饰我的一些Action方法:

public class RegexValidateAttribute : ActionFilterAttribute
{
    private static readonly ILog logger =
        LogManager.GetLogger( typeof( RegexValidateAttribute ).FullName );

    public string ParameterName { get; set; }
    public string Expression { get; set; }

    public override void OnActionExecuting( ActionExecutingContext filterContext )
    {
        string parameterValue = Convert.ToString(
            filterContext.ActionParameters[ ParameterName ] );
        if ( parameterValue != null )
        {
            if ( !Regex.IsMatch( parameterValue, Expression ) )
            {
                logger.Error( "INPUT_VALIDATION_EXCEPTION [ Parameter "
                              + ParameterName + " did not match the regex: '" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-3

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

如何在不发生临时中断的情况下扩展Azure应用程序?

我正在使用Windows Azure Management API来扩展我的Azure Web角色.在某些时候,我有一个实例,并决定我想从一个实例转到两个实例.我发送HTTP POSt请求

https://management.core.windows.net:443/<my-subscription-id>/services/hostedservices/<my-service-name>/deployments/<my-deployment-name>/?comp=config
Run Code Online (Sandbox Code Playgroud)

使用XML指定与当前部署相同的配置,并将实例计数设置为2.呼叫成功,更改开始.现在大约30秒,Web角色将不接受HTTP调用 - 调用者将获得

10061 connection refused
Run Code Online (Sandbox Code Playgroud)

在浏览器中.这意味着该角色不会为客户端请求提供服务.那是个问题.

如何以始终为客户端请求提供服务的方式扩展Web角色?

windows api azure azure-web-roles

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

如何将Action提取到成员函数中?

我有这个代码:

class SomeClass {
    void someFunction()
    {
          Action<string> myAction = (what)=>
          {
             //whatever
          }
          new List<string>().ForEach(myAction);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将代码内部提取myAction到一个单独的成员函数中.

我怎么做?

.net c# linq lambda

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

如何检查类型指针是否与该类型正确对齐?

假设我有一个模板函数,用于处理指向未知类型的指针T。现在,如果类型T碰巧void*在 64 位平台上,那么它必须是 8 字节对齐,但如果T碰巧是,char它必须是 1 字节对齐,如果T碰巧是一个类,那么它的对齐要求将取决于其成员变量。

这一切都可以在纸上计算,但如何使编译器产生给定类型的对齐要求T

有没有办法在编译时找到给定类型的对齐要求?

c++ alignment

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

8086汇编,关于PTR运营商

这可能是简单而愚蠢的,但无论如何我会问它,因为我似乎无法弄明白.

一个简单的代码片段:

 assume cs:code, ds:data
 data segment
    b dd 256
 data ends

 code segment
 start:
        mov ax,data
        mov ds,ax
        mov ax,word ptr b     -> the result of this operation will be ax:= 256 (100h)

        mov bx,word ptr b+1   -> while this is going to be bx:= 1
Run Code Online (Sandbox Code Playgroud)

我想它与地址有关,它被一个字节或其他东西移动但我不完全确定,我真的需要理解.

提前致谢 !

x86 assembly x86-16

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

是否有内置方法将HRESULT表示为winerror.h常数(例如E_FAIL)?

在我的C#代码中,我希望能够记录COMExceptions,以便不仅输出HRESULTs的十六进制表示形式(例如0x80004005),而且输出相应的WinError.h定义符号(例如E_FAIL)。

如果我调用ToString()异常引用,则只有十六进制表示形式。

是否有一种内置方法来获取对象内部值的类似E_FAIL人类可读的常量?HRESULTCOMException

.net c# com com-interop error-code

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

除了"flags"参数之外,ChildWindowFromPointEx和ChildWindowFromPoint有何不同?

Windows API具有ChildWindowFromPoint()ChildWindowFromPointEx()功能,它们的不同之处在于后者具有指定要跳过哪些窗口的uFlags参数.

看起来如果我CWP_ALL进入,ChildWindowFromPointEx()我会得到与我一样的效果ChildWindowFromPoint().

uFlags参数的唯一区别是什么?我可以ChildWindowFromPointEx()随处使用并CWP_ALL在需要ChildWindowFromPoint()行为时通过吗?

windows winapi visual-c++

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

如何在仅具有StartCopyFromBlob()的Azure SDK中实现单个blob的同步复制?

早期版本的Azure SDK具有CloudBlob.CopyFromBlob()同步性,我们在代码中使用它们.我们现在需要转移到SDK 2.4并且那里没有这样的方法,而是CloudBlockBlob.StartCopyFromBlob()返回一些魔术令牌,我们可以使用它来检查副本是如何完成的.

在我们的代码中"blob"的"背景"复制是没有意义的 - 同步执行复制会很好,所以以某种方式CopyFromBlob()使用较新的SDK中的东西实现等效的旧版本会很好.

这是我的方法:

CloudBlockBlob sourceBlob = sourceContainer.GetBlockBlobReference(sourcePath);
CloudBlockBlob targetBlob = targetContainer.GetBlockBlobReference(targetPath);
var copyToken = targetBlob.StartCopyFromBlob(sourceBlob.Uri);
while( true ) {
    System.Threading.Thread.Sleep(100);
    CloudBlockBlob target = targetContainer.GetBlockBlobReference(targetPath);
    bool greatSuccess = false;
    switch( target.CopyState.Status ) {
        case CopyStatus.Success:
            greatSuccess = true;
            break;
        case CopyStatus.Pending:
            continue;
        default:
            throw new Exception( "Failed to copy" );
    }
    if( success ) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来很有效,但我不确定那里没有潜在的问题.

什么是惯用的方式使用StartCopyFromBlob(),然后等待复制完成?

.net c# azure-storage azure-storage-blobs azure-sdk-.net

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

具有32位寄存器和常量的指令如何只占用三个字节?

我正在审查Visual Studio 2012中某些程序的反汇编,并看到以下内容:

65F920F3  or          eax, 0FFFFFFFFh  
65F920F6  jmp         65F92157  
Run Code Online (Sandbox Code Playgroud)

请注意or.它占用地址F3-F5,这意味着它只占用三个字节.该eax寄存器是四个字节,所以我假定不变0FFFFFFFFh也是四个字节.

该指令如何适合三个字节?

x86 assembly disassembly

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

为什么允许垃圾收集器使用终结器收集看似引用的对象?

这个问题基本上是我们GC.KeepAlive()首先需要的原因.

这就是我们需要它的地方.我们有一些非托管资源的包装器

public class CoolWrapper
{
     public CoolWrapper()
     {
         coolResourceHandle = UnmanagedWinApiCode.CreateCoolResource();
         if (coolResourceHandle == IntPtr.Zero)
         {
             // something went wrong, throw exception
         }
     }

     ~CoolWrapper()
     {
         UnmanagedWinApiCode.DestroyCoolResource(coolResource);
     }

     public void DoSomething()
     {
         var result = UnmanagedWinApiCode.DoSomething(coolResource);
         if (result == 0)
         {
             // something went wrong, throw exception
         }
     }

     private IntPtr coolResourceHandle;
}
Run Code Online (Sandbox Code Playgroud)

我们的代码使用该包装器:

var wrapper = CoolWrapper();
wrapper.DoSomething();
Run Code Online (Sandbox Code Playgroud)

如果此代码在Release配置中运行而不是在调试器下运行,那么代码优化器可能会发现在此代码之后实际上没有使用该引用coolResourceHandle,并且在读取内部后该成员变量未被访问(通过托管代码)DoSomething()并将其值传递给非托管代码,因此会发生以下情况:

  • DoSomething() 叫做
  • coolResourceHandle 被读了
  • 垃圾收集突然开始
  • ~CoolWrapper() 运行
  • UnmanagedWinApiCode.DestroyCoolResource() 运行并且资源被破坏,资源句柄无效
  • UnmanagedWinApiCode.DoSomething() 使用现在引用不存在的对象的值运行(或者可能创建另一个对象并分配该句柄) …

.net c# garbage-collection

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