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

StackOverflow https://stackoverflow.com/questions/1610061

Вопрос

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

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

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

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

Спасибо

Это было полезно?

Решение

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

Другие советы

Этот способ фокусируется на изоляции файла строки подключения от 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>

глобальный.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  

%>

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top