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

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

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

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

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 октября 2009

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

1 голос
/ 22 апреля 2010

Этот способ фокусируется на изоляции файла строки подключения от webroot для системы контроля версий исходного кода (например, 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  

%>
0 голосов
/ 23 октября 2009

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

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

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

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

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

...