2014-02-07 5 views
1

ASP.NET 웹 폼 웹 사이트를 새 서버로 마이그레이션하고 있습니다. 이전 서버에서 웹 사이트의 루트에있는 App_Data 폴더에 데이터베이스가있었습니다. 내 새 서버에서 루트 외부의 다른 폴더에 데이터베이스가 있고 모든 작동합니다.프로필 명령은 App-Data 폴더와 ASPNETDB.MDF를 생성합니다.

하지만 이상한 일이 발생합니다. 웹 사이트에 가서 서핑을 할 때 갑자기 App_Data 폴더가 ASPNETDB.MDF라는 데이터베이스가있는 사이트의 루트 폴더에 생성됩니다. 나는 그것을 지울 수 있지만 잠시 후에 다시 나타난다.

나는 몇 가지 테스트를했고, 시도, 나는이 코드를 실행할 때 나는 DB가 생성되고 있음을 발견 :
TestLabel.Text = Profile.MyProfileParameter.ToString(); 

그래서 나는 그것을 유발 호출되는 프로필해야합니다 생각합니다. 내 Web.config의에서 나는 다음과 같은 한 : (약간 감소, 내가 더 프로파일 매개 변수가)

<profile enabled="true"> 
     <properties> 
     <add name="MyProfileParameter" type="Int32" defaultValue="30"/> 
     </properties> 
    </profile> 

내 Web.config의 최대 약간 높은 난 내 루트 외부 데이터베이스를 가리키는 ConnectionString을이 폴더 :

<connectionStrings> 
    <add name="ConnectionString" providerName="System.Data.SqlClient" 
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheNameOfMyDatase;Integrated Security=True;MultipleActiveResultSets=True" /> 
    </connectionStrings> 

프로필에 대한 호출로 인해 데이터베이스가 생성되는 이유는 누구나 알 수 있습니까? 실제 쇼 스토퍼가 아니지만 이것이 왜 발생하는지 알고 싶습니다.

일부 추가 정보 :

  • 내 기존 서버 내 새로운 서버에서 Windows Server 2008 R2
  • 내 응용 프로그램이 3.5

ASP.NET에서 실행되고있다 2003

  • 윈도우 서버를 가지고 해결 방안 :

    명백하게 sti web.config에 대해 배울 점이 많습니다.

    web.config 외에 web.config가 상속하는 machine.config도 있습니다. 섹션 <profile>에서이 시스템 설정에서 이 설정이 있습니다 :

    <profile> 
        <providers> 
         <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
        </providers> 
    </profile> 
    

    이 설정은 (I이 정말 필요하다 생각하지 않습니다) 나는 localSqlServer를 제거 Web.config의

    첫째로 대체 할 수 있습니다 내 <connectionStrings>에 명확한 명령을 추가하여 연결 문자열에서 :

    <connectionStrings> 
        <!-- clear command removes localSqlServer from machine.config --> 
        <clear /> 
        <add name="ConnectionString" providerName="System.Data.SqlClient" 
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheNameOfMyDatase;Integrated Security=True;MultipleActiveResultSets=True" /> 
    </connectionStrings> 
    

    나는 내 사이트를 실행하는 경우는 이제 연결 이름을 말하는 오류가 'LocalSqlServer'을 (를) 찾을 수 없습니다.

    그래서 나는 <profile> 섹션에 새로운 프로 바이더를 추가하고 이제 모두가 갑자기 나타나는 미세 더 이상 데이터베이스를 작동 내 ConnectionString을

    <profile enabled="true"> 
        <providers> 
         <!-- clear command removes localSqlServer from machine.config --> 
         <clear/> 
         <add name="AspNetSqlProfileProvider" connectionStringName="ConnectionString" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
        </providers> 
    

    에 가리 킵니다.

    방향을 알려 주셔서 감사합니다. 보너스는 당신 것입니다!

  • +0

    4.0 또는 4.5와 같은 이전 버전과 새 서버의 OS 버전과 같이 타겟팅하려는 Asp.Net의 버전. – ijaz

    답변

    1

    AspNetdb는 Asp.Net 회원 공급자 또는 "프로필, 역할/권한 등"과 같은 다른 응용 프로그램 서비스에서 사용되는 데이터베이스입니다. 생성 된 .mdf 파일은 데이터베이스입니다 (SQL 2005 Express).

    ASP.NET에서 표준 SQL 공급자를 사용할 때 프로필이나 멤버 자격 또는 역할에 저장 한 정보를 저장합니다. App_Data는이 db의 기본 위치이지만 변경 될 수 있습니다. 자세한 내용은 <membership> <providers> </providers> </membership>과 같이 web.config 파일의 섹션을 찾아서 업데이트하십시오. 다음 게시물을 참조하십시오. http://forums.asp.net/t/1517995.aspx

    관련 문제