2010-03-04 1 views
1

В моем веб-приложении ASP.NET используется специализированный поставщик ресурсов, поддерживаемый хранилищем данных SQL Server. Насколько я понимаю, неявный ресурс вызывает поставщик ресурсов во время компиляции, чтобы определить, нужно ли генерировать выражения ресурсов для данного ключа ресурса. Следовательно, мой процесс сборки теперь зависит от наличия активной и актуальной базы данных, содержащей необходимые ключи ресурсов.ASP.NET Resourcing: обнаружение при вызове ResourceProvider во время компиляции и времени выполнения

Это само по себе не обязательно является проблемой. Проблема в том, что приложение подключается к одной из многих баз данных, определяемой параметром querystring (ужасный дизайн, но, к сожалению, я застрял с ним на данный момент). Очевидно, что во время компиляции нет запроса, поэтому поставщик ресурсов не может связаться с базой данных. Можно ли определить, что поставщик ресурсов (или, более конкретно, код ниже поставщика ресурсов) был вызван во время компиляции, поэтому я могу указать на предопределенную базу данных?

На данный момент я просто дефолт для конкретной базы данных, если HttpContext.Current == null. Это прекрасно работает, но эта логика должна существовать на уровне доступа к данным, и я абсолютно ненавижу идею уровня доступа к данным, ссылающегося на System.Web. Есть ли лучшее решение?

+0

Было бы неплохо, если бы кто-то может дать хороший ответ на это. Я также использую HttpContext, и это бесполезно с моим DAL. –

ответ

0
 object IResourceProvider.GetObject(string resourceKey, CultureInfo culture) 
     { 
      if (AspHelpers.ASPNetCompilerExecutionContext) 
       return "ASPNetCompilerDesignTimeExecutionContext"; 

где

public static bool ASPNetCompilerExecutionContext 
{ 
    get 
    { 
     string entryMethod = (new StackTrace()).GetFrame((new StackTrace()).FrameCount - 1).GetMethod().Name; 
     if (entryMethod == "PrecompileApp") 
      return true; 
     else 
      return false; 
    } 
} 

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

  • Нет связанных вопросов^_^