none
WCF iis Hosting 에서 .mdf database 를 Open 하지 못하는 문제 RRS feed

모든 응답


  • WCF Self Hosting 에서는 .mdf database 를 Open 하여 Client 에 data 를 이상 없이 잘 전달 하는데.
    WCF iis Hosting 에서는 .mdf database 를 아예 Open 하지 못 합니다.

    사용 툴은 Visual Studio 19 입니다.
    "Default Web Site" 에 응용 프로그램 추가도 이상 없이 추가 되었습니다.

    컴퓨터를 포멧후 윈도우 10을 재 설치 하고 안 됩니다.(윈도우 7 도 같은 결과)


    어떤 원인 인지 모르겠습니다.
    해결책은 알려 주시면 감사 하겠습니다.

    부탁 합니다

    [샘플 코드]   
    string strConn = "Data Source =.\\SQLEXPRESS01; AttachDbFilename = C:\\DataDown_Server\\WAPSDB.MDF; Integrated Security = true; Connect Timeout = 30";
    SqlConnection conWapsDb = new SqlConnection(strConn);

    conWapsDb.Open();     // Self Hosting 시는 Open되나  IIS Hosting 할때는 Open 못함

    string query = @" SELECT DISTINCT TOP 12 dbo.Notice.no_DateUpdate, dbo.Notice.no_Notice, dbo.Notice.no_DateUpdateS, dbo.ProgramInstall.pr_CompID, dbo.CompanyClient.co_Name, co_UpdateCycle, co_DataDownApproval,co_CollectionDateBeAf, co_CollectionDateDays,co_CollectionDateMsg "; 
            query += @" FROM  dbo.Notice LEFT OUTER JOIN (dbo.ProgramInstall LEFT OUTER JOIN dbo.CompanyClient ON dbo.ProgramInstall.pr_CompID = dbo.CompanyClient.co_CompID) ON dbo.Notice.no_ProCode = dbo.ProgramInstall.pr_Program";
               
    SqlDataAdapter adapter = new SqlDataAdapter(query, conWapsDb);
    adapter.SelectCommand.Parameters.Add("pr_CompID", SqlDbType.NChar, 5).Value = CompID;
               
    DataSet ds = new DataSet();
    adapter.Fill(ds);

               
    // 콜백 계약을 명시하여 현재 요청 신호를 보낸 클라이언트에 대한 정보 획득
    ISearchResult client = OperationContext.Current.GetCallbackChannel<ISearchResult>();
               
    // 콜백 메서드 호출
    client.SearchCustomerResult(ds);
             
    conWapsDb.Close();

    2019년 8월 5일 월요일 오전 7:19
  • IIS에는 응용 프로그램 풀(pool) ID라는 보안 기능이 있는데 도메인이나 로컬 계정을 만들어서 관리 할 필요없이 특정 계정으로 응용 프로그램 풀을 실행할 수 있게 합니다.



    SQL 데이터베이스를 연결할 때 계정 ID가 IIS 응용 프로그램 풀 ID로 변경되었으므로 통합 보안(integrated security)이 더 이상 유효하지 않습니다. 이 문제를 해결하는데 두가지 방법이 있습니다.

    1. 웹 사이트에서 사용하는 응용 프로그램 풀 ID를 VS2019를 실행하는 계정으로 변경합니다. (현재 로그인 된 사용자 여야합니다.)
    2. 아래와 같이 Username/Password를 사용하여 데이터베이스를 연결합니다.
    "data source=10.157.18.36\SQLExpress;initial catalog=TestStore;user id=sa;password=123456; "

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2019년 8월 6일 화요일 오전 8:20
    중재자
  • https://blogs.msdn.microsoft.com/gaurav/2013/12/21/deployment-of-sql-express-localdb-on-iis/ 문서도 참조해 보세요. "Cannot get a local application data path. Most probably a user profile is not loaded. If LocalDB is executed under IIS, make sure that profile loading is enabled for the current user." 이와 같은 내용과 더불어 참조할 만한 내용이 있을 것 같습니다.
    2019년 8월 8일 목요일 오전 6:01