0

사용자 프로필을 저장하는 데 사용되는 aspnetservicesdb 데이터베이스가 있습니다. 새로운 asp.net mvc 응용 프로그램을 배포했습니다. 응용 프로그램은 멤버십/프로필 용도로 appdata 디렉토리에있는 로컬 sqlexpress 데이터베이스를 사용합니다.MVC 응용 프로그램이 잘못된 데이터베이스에서 자격 증명을 찾고 있습니다.

응용 프로그램에서 sqlexpress 데이터베이스를 사용하는 것을 원하지 않습니다.

web.config 및 AuthConfig.RegisterAuth()에서 연결 문자열을 제거했습니다. from global.asax

지금까지이 방법이 효과적이었습니다. 컨트롤러에서 User.Identity.Name을 성공적으로 사용할 수 있습니다. 그러나 뷰에서 User.IsInRole을 사용하려고하면 로컬 sqlexpress db가 존재하지 않기 때문에 SQL Server에 오류가 없습니다.

기존 데이터베이스를 사용하고 sqlexpress 데이터베이스를 찾는 것을 응용 프로그램에 알리는 방법은 무엇입니까?

편집 - 웹 설정

<authentication mode="Forms"> 
    <forms loginUrl="~/login.aspx" timeout="2880" /> 
</authentication> 
<membership userIsOnlineTimeWindow="480"> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="12" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 
+0

어떤 버전의 MVC입니까? 어느 회원 공급자입니까? SqlMembershipProvider는 web.config에서 데이터베이스를 구성하므로 거기에 연결 문자열을 설정합니다. EntityFramework는 무엇과 관련이 있습니까? SqlMembershipProvider는 EntityFramework를 사용하지 않습니다. –

+0

예, 확실합니다. localdb에 대해 주석 처리 된 기본값을 포함하여 원래 질문에 연결 문자열을 추가했습니다. – tintyethan

+0

엔티티 컨텍스트의 정의를 공유 할 수 있습니까? –

답변

0

당신은 멤버 자격 공급자를 사용하는 asp.net 말 안할에서 다른 회원 부분은 여기에있다 - 여기에 연결 문자열은

<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=removed;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|removed" providerName="System.Data.SqlClient"/>--> 
    <add name="ApplicationServices" connectionString="Data Source=removed;Initial Catalog=aspservicesdb;UID=removed;PWD=removed" providerName="System.Data.SqlClient" /> 

편집합니다. 당신이 다른 방법으로 회원 자격을 얻고 있기 때문에, 그 (당신이 당신의 응용 프로그램에서 SimpleMembership 코드를 제거해야 의미, 당신은 아마 SimpleMembership을 사용하고 저를 알려주는 등,

<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="480"> 

을 그리고 : 그것은 다음과 같이한다 사용자 데이터 컨텍스트 및 기타 속성)

+0

SimpleMembership에 대해 처음 들어 본 적이 있습니다. 나는 지금 막 이것에 관해 약간 주위를 둘러 보았다. 그러나 당신이 그것을 제거하기위한 가이드를 위해 추천할만한 자원이 있는가? 당신의 도움을 주셔서 감사합니다. – tintyethan

+0

응용 프로그램이 로컬 및 서버에서 이전 멤버십 데이터베이스의 사용자 이름을 성공적으로 가져 오는 중임을 말씀 드리고 싶습니다. 오류는 서버에서만 발생하며 사용자 역할에 액세스하려고 할 때만 발생합니다. – tintyethan

+0

@tintyethan - 글쎄, 내 MVC 버전에 대한 요청을 무시하고, SqlMembershipProvider를 사용하고 있다는 것을 알고 있다고 말한 적이있다 ... MVC4를 사용하고 있다면 배워야 할 새로운 것들이있다. –

0

<profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     </providers> 
    </profile> 
    <roleManager enabled="true"> 
     <providers> 
     <clear /> 
     <add connectionStringName="ApplicationServices" applicationName="/" 
      name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     </providers> 
    </roleManager> 

문제는 해결 될 것으로 보인다 ... 내가 웹 설정에이 부분을 추가하지 않았 밝혀졌습니다.