2011-11-28 3 views
3

나는 여기서 피클을 먹었습니다. 동일한 솔루션에서 두 개의 응용 프로그램에서 사용한 사용자 지정 프로필이 있습니다. 첫 번째는 이전 .net 응용 프로그램의 사용자 프로필 및 특성 집합을 .net 멤버 자격, 역할, 프로필 테이블로 가져 오기 위해 빌드 한 웹 응용 프로그램이었습니다. 프로필베이스를 상속 한 프로필 공통 클래스를 만들었습니다. 두 응용 프로그램 모두 네임 스페이스 내에 동일한 클래스의 복사본을 가지고 있습니다..net 프로필 공급자 및 사용자 정의 프로필. ''설정 속성을 찾을 수 없습니다.

using System; 
using System.Web.Security; 
using System.Web.Profile; 
using System.Collections.Specialized; 


namespace WebProject 
{ 
    public class ProfileCommon : ProfileBase 
    { 
     public static ProfileCommon GetUserProfile(string username) 
     { 
      return Create(username) as ProfileCommon; 
     } 

     public static ProfileCommon GetUserProfile() 
     { 
      return Create(Membership.GetUser().UserName) as ProfileCommon; 
     } 

     [SettingsAllowAnonymous(false)] 
     public string FirstName 
     { 
      get 
      { 
       return base["FirstName"] as string; 
      } 
      set 
      { 
       base["FirstName"] = value; 
      } 
     } 

     [SettingsAllowAnonymous(false)] 
     public string LastName 
     { 
      get 
      { 
       return base["LastName"] as string; 
      } 
      set 
      { 
       base["LastName"] = value; 
      } 
     } 

     [SettingsAllowAnonymous(false)] 
     public string Email 
     { 
      get 
      { 
       return base["Email"] as string; 
      } 
      set 
      { 
       base["Email"] = value; 
      } 
     } 

     [SettingsAllowAnonymous(false)] 
     public StringCollection Sites 
     { 
      get 
      { 
       return base["Sites"] as StringCollection; 
      } 

      set 
      { 
       base["Sites"] = value; 
      } 
     } 
    } 
} 

내 웹 구성 파일의 내 프로필 공급자 섹션은 다음과 같습니다. 나는 사용자 가져 오기를 수행 한 응용 프로그램을 사용하고, 회원, 역할과 내가 만든 프로파일을 사용하는 또 다른이는 원인이 경우

<profile defaultProvider="WebProjectProfileProvider" inherits="WebProject.ProfileCommon"> 
    <providers> 
    <clear /> 
    <add name="WebProjectProfileProvider" applicationName="/" type="System.Web.Profile.SqlProfileProvider" connectionStringName="Test"/> 
    </providers> 
</profile> 

은 "설정 속성을 ''을 (를) 찾을 수 없습니다." 오류? 오류가 발생한 위치와 내가 이미 확인한 가장 일반적인 원인 중 일부를 정확히 파악하지 못하는 것 같습니다. 이러한 대규모로 .net에서이 기능을 사용한 것은 이번이 처음입니다. 어떤 도움이라도 대단히 감사합니다.

감사합니다.

+0

어디에서 사용 가능한 설정 이름과 유형을 지정 했습니까? 올바르게 기억한다면 Web.config 파일에도 지정해야합니다. – Venemo

+0

지정된 이름과 유형은 프로필 공통 클래스 자체 내에 있습니다. 왜냐하면 나는 web.config에서 을 사용하기 때문입니다. 위에 나열된 것처럼 프로파일 공통 클래스 내에서 유형을 자동으로 인식합니다. "상속"특성을 사용하지 않으면 .net 프레임 워크는 런타임에 특성이 선언되지 않았 음을 나타내는 오류를 던집니다. 상속 속성을 사용하지 않는 경우 개발자는 노드를 사용하여 web.config 파일 내에서 이름과 유형을 선언해야합니다. – gsirianni

답변

1

내 문제가 발견되었습니다. 문제는 호출 코드에있었습니다. 나는 나뿐만 아니라 웹 설정에서 프로파일의 속성을 선언하고 선언했다으로 실행했던 정적 메소드로 다시

ProfileCommon.GetUserProfile(); 

다른 문제를 호출 코드를 변경하는 것을 잊었다 프로파일에 대한 많은 문제로 실행했다 프로필 공통 클래스에 있습니다. 이로 인해 "속성이 이미 정의되었습니다."와 같은 플립 플롭 오류가 발생했습니다. 및 "설정 속성 ''을 (를) 찾을 수 없습니다."

요약하면 "웹 응용 프로그램"솔루션을 사용하는 경우 web.config에없는 코드 내에서 ProfileCommon 프록시 클래스를 선언하십시오. "웹 사이트"솔루션을 사용하는 경우 web.config에서 속성을 선언하십시오.

내가 웹에 올린 가장 좋은 예는이 사이트에서 온 것입니다.

ASP.NET Profiles in Web Application Projects

그것은 좋은 간결하게 요약 사용자 정의 프로파일을 사용하는 방법에 대해 설명하고이 방법은 웹 응용 프로그램을 수행 왜이 웹 사이트에 대한 다른 끝낼 이유에 대한 자세한 설명을 제공합니다. 희망이 많은 머리 아픔을 저장합니다.

+0

http://weblogs.asp.net/jongalloway/writing-a-custom-asp-net-profile-class – KRob

관련 문제