Лучший способ управлять строками подключения в проекте, содержащем как классический код ASP, так и код ASP.Net 1.1?

У меня есть унаследованный мной проект, который в первую очередь является классическим приложением ASP; однако в приложении есть несколько страниц ASP.net. Некоторые страницы ASP.net имеют версию 1.1 и не используют код модели.

Классические страницы ASP имеют несколько каталогов / include, в которых есть файл для подключений к базе данных. На страницах ASP.Net строка подключения жестко закодирована в коде.

Я пытаюсь убрать этот беспорядок со строками подключения, чтобы им было легче управлять в разных средах разработки.

Есть ли у кого-нибудь рекомендации о том, как я могу эффективно сделать это, что будет работать как для классических страниц ASP, так и для страниц ASP.Net?

Спасибо


person Community    schedule 22.10.2009    source источник
comment
Эта статья (blog.codeeffects.com/Article/) содержит интересный подход.   -  person    schedule 09.10.2011


Ответы (3)


Поместите файл web.config в корень классического сайта asp. Страницы ASP.net без кода (и при условии отсутствия нигде виртуальных каталогов / приложений) будут использовать этот файл web.config. Вы можете поместить туда строки подключения. Скорее всего, у вас будет два набора струн, но это лучше, чем многие другие. И если вы действительно хотите, вы можете написать классический код asp для чтения этого файла конфигурации.

person Joel Coehoorn    schedule 22.10.2009

Этот способ направлен на изоляцию файла строки подключения от веб-корневого каталога для системы управления версиями исходного кода (например, svn).

Файлы:

c:\inetpub\config\config.xml
c:\inetpub\wwwroot\global.asa
c:\inetpub\wwwroot\onInit.asp

config.xml:

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <database
      ip="XXXX"
      catalog="XXXX"
      id="XXXX"
      password="XXXX"
    />
</root>

global.asa:

<script runat="Server" language="VBScript">
    Sub Application_OnStart()        
        server.execute("/onInit.asp")
    End Sub

    Sub Application_OnEnd()
    End Sub
</script>

onInit.asp:

<% 

    dim xmlDoc, xmlPath, objNodes
    set xmlDoc = server.CreateObject("microsoft.xmldom")
    xmlDoc.async = false        
    xmlPath = Server.MapPath("/")
    xmlPath = left(xmlPath, inStrRev(xmlPath, "\")) & "config\config.xml"
    xmlDoc.load xmlPath

    set objNodes = xmlDoc.selectNodes("//database") 

    application("connectionString") = "Provider=SQLOLEDB.1;Persist Security Info=True;"_
        & "Data Source="     & objNodes.item(0).getAttribute("ip") & ";"_ 
        & "Initial Catalog=" & objNodes.item(0).getAttribute("catalog") & ";"_
        & "User ID="         & objNodes.item(0).getAttribute("id") & ";"_
        & "Password="        & objNodes.item(0).getAttribute("password")

    set objNodes = nothing
    set xmlDoc = nothing  

%>
person Community    schedule 22.04.2010

Хм. Думаю, я не единственный, у кого такой беспорядок, который нужно убирать.

У меня нет для вас очень полезного ответа, но вот стратегия, которую мы придумали. Это выходит за рамки вашего вопроса, но, надеюсь, он отвечает на вопросы, которые вы еще не думали задать. Перед вами стоит огромная задача, и я хотел бы дать вам как можно больше советов по всему процессу, а не только по строкам подключения.

  • полностью реорганизовать наш исходный код
  • Полностью реорганизуйте файловую структуру в нашей сети
  • исправить код так как нам нужно его изменить, а не пытаться сделать все сразу в рамках большого проекта.
  • поставьте перед собой цель преобразовать классический asp в asp.net (и получил поддержку от нашего менеджера, оправдав проект экономией рабочей силы за счет более быстрой разработки / обслуживания.)
  • созданы и задокументированы стандарты для хранения строк подключения, общих файлов, общих файлов CSS и т. д.
  • В рамках нашей реорганизации у нас есть глобальная общая папка, на которую мы можем ссылаться из любого из наших проектов. Он содержит общие изображения, CSS и т. Д., Которые используются на нескольких отдельных веб-сайтах проекта и т. Д.
  • мы также указали, что у каждого веб-сайта будет общая папка с подпапкой CSS, script и img, чтобы каждый проект, над которым мы работаем, был согласован.
  • как только мы завершили переписывание нашего первого веб-приложения, мы создали шаблон проекта, чтобы упростить запуск нового проекта веб-сайта.

Побочным эффектом всей проделанной работы стало то, что мы безболезненно выполнили два обновления Visual Studio, просто используя мастера преобразования. Переход с VS 2003 на VS 2005, а затем на VS2008 был безболезненным.

Кроме того, наш выбор в системе управления версиями был сделан исходя из того, как мы хотели исправить беспорядок. Мы использовали TFS, но были ограничены взаимосвязью между проектами TFS и решениями VS. Мы обнаружили, что использование Subversion дает нам большую гибкость, чем TFS, поэтому мы смогли расположить структуру каталогов исходного кода гораздо более управляемым способом, чем это допускала бы TFS.

person Community    schedule 22.10.2009