2014-11-24 6 views
1

Я работаю над проектом, который, в зависимости от того, как вы скомпилируете проект, имеет безопасную и незащищенную версию проекта. Короче говоря, я хотел бы знать, как деактивировать ValidateAntiForgeryToken в зависимости от версии, в которой я запущен.IF/Else statements по атрибуту

[AllowAnonymous] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult ProductInfo(ProductInfoModel review) 
    { 
     ... 

    } 
+5

'# if' позволяет исключить произвольный код на основе параметров компиляции. –

ответ

0

Определить символ компиляции (возможно назвать это SECURED), а затем проверить на линии для этого символа:

[AllowAnonymous] 
    [HttpPost] 
#if SECURED 
    [ValidateAntiForgeryToken] 
#endif 
    public ActionResult ProductInfo(ProductInfoModel review) 
    { 
     ... 
    } 

Если вам не нравится, добавив его в свойствах вашего проекта, вы можете также определить это от команды MSBuild:

MSBuild [...] /p:DefineConstants=SECURED 
0

У вас есть отдельные сборки для каждого? Если это так, вы можете добавить в сборку символ (Свойства проекта -> Сборка), где вы не хотите его запускать, и добавить #IF внутри атрибута вокруг кода, который вы не хотите запускать.

#if !DISABLEFORGERY 
    ... 
#endif 

Вы можете поместить его вокруг определения атрибута на классе потребляющего, но вы должны повторить его в нескольких местах (потенциально).

Смежные вопросы