MOSS로 구성한 사이트에, IIS 내 가상 디렉토리로 추가 구성을 한 경우,
간혹 Output Cache가 정상적으로 동작하지 않는 경우가 있다.
그런 경우 아래와 같은 이벤트가 계속 쌓이게 된다.
이벤트 형식: 오류
이벤트 원본: Office SharePoint Server
이벤트 범주: 게시 캐시
이벤트 ID: 5785
날짜:  2007-10-01
시간:  오전 8:36:03
사용자:  N/A
컴퓨터: PORTAL
설명:
출력 캐싱에 대한 게시 사용자 지정 문자열 처리기에 연결할 수 없습니다. IIS 인스턴스 ID는 '677781685'이고 URL은 'http://portal/TestSite/ServiceFrom.aspx'입니다.
자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.

정확히 확인하진 않았지만, 위와 같은 현상이 발생되는 가상 디렉토리는 보통 SPS 쪽이 NTLM이고, 가상 디렉토리 부분이 Anonymous 형태로, 인증 자체가 아예 틀린 경우다.
그런 경우 SPS 쪽의 Output Cache 프로필 중에 Anonymous 대응용 프로필이 없어 발생하는 것으로 생각된다.

이 경우 처리 방법은 해당 가상 디렉토리 내에 web.config를 별도로 생성해서 아래와 같이 처리해 주면 된다. [ 굵은 색 부분을 추가해 주면 된다. ] 
<connectionStrings/>
 <system.web>
    <httpModules>
      <remove name="OutputCache"/>
      <remove name="PublishingHttpModule"/>
    </httpModules>
   
  <!--
            컴파일된 페이지에 디버깅 기호를 삽입하려면
            compilation debug="true"로 설정하십시오. 이렇게 하면
            성능에 영향을 주므로 개발하는 동안에만 이 값을
            true로 설정하십시오.
        -->
  <compilation debug="false">



물론 정확하게는 anonymous에 대응되는 Cache 프로필을 만드는 것이 더욱 좋긴 하지만, 설정 처리 방법을 잘 모르니....
후에 Cache에 대해서 더 자세히 알게 되면 추가하도록 하겠다.

728x90

지금 작업 중에, MOSS 2007 안에 있는 콘텐츠 데이터베이스를 각 사이트 콜렉션별로
나누어 만드는 작업이, 콘텐츠 데이터베이스 갯수 : 사이트 콜렉션 갯수를 1:1로 맞추어 진행하고 있다.

그런데, 재미있는 것은 만든 사이트 콜렉션 내에 사이트를 무한대 만들어도
콘텐츠 데이터 베이스에서는 무조건 현재 사이트 수를 1로 잡고 있었다.

이는 즉, 이 콘텐츠 데이터베이스 입장에서는 하위 사이트 수는 전혀 관계 없고
오로지 사이트 콜렉션이 몇개인지에 달려있다고 볼 수 있다.
만일 사이트 콜렉션 수가 콘텐츠 데이터베이스에 1개만 달렸다면,
콘텐츠 데이터베이스는 죽었다 깨어나도 사이트 콜렉션을 1개만 달고,
그 하위의 사이트는 무한대로 달 수 있게 된다.

728x90
MOSS 2007을 설치하면 기본적으로 설치되는 프로필의 목록이다.
이 목록을 이용하면, 원하는 이름 별로 찾을 수 있다.

한글 이름 Static Name
계정 이름 AccountName
이름 FirstName
LastName
전체 이름 PreferredName
회사 전화 WorkPhone
사무실 Office
부서 Department
직함 Title
관리자 Manager
설명 AboutMe
개인 사이트 PersonalSpace
그림 PictureURL
사용자 이름 UserName
빠른 연결 QuickLinks
웹 사이트 WebSite
공용 사이트 리디렉션 PublicSiteRedirect
보조 관리자 SPS-Dotted-line
피어 SPS-Peers
업무 SPS-Responsibility
기술 SPS-Skills
이전 프로젝트 SPS-PastProjects
취미 SPS-Interests
학교 SPS-School
주소 SPS-SipAddress
생일 SPS-Birthday
내 사이트 업그레이드 SPS-MySiteUpgrade
목록 제안 안 함 SPS-DontSuggestList
프록시 주소 SPS-ProxyAddresses
고용 날짜 SPS-HireDate
마지막으로 동료를 추가한 날짜 SPS-LastColleagueAdded
Outlook Web Access URL SPS-OWAUrl
리소스 포리스트 SID SPS-ResourceSID
리소스 포리스트 계정 이름 SPS-ResourceAccountName
마스터 계정 이름 SPS-MasterAccountName
비서 Assistant
회사 전자 메일 WorkEmail
휴대폰 CellPhone
팩스 Fax
집 전화 HomePhone

728x90

금일 작업 중에, 일정 되풀이된 일정들을 SPQuery를 이용하여 SPListItemCollection을 가져오는 방법에 대해서

분석했습니다.

 

문제원인

만일 오늘 날짜에 해당하는 일정(되풀이 포함) 사항을 가져오려면 아래와 같이 작성하게 됩니다.

 

SPQuery query = new SPQuery();

// 쿼리문생성

query.Query = "<Where>"

               + "<DateRangesOverlap>"

               + "<FieldRef Name=\"EventDate\" />"

               + "<FieldRef Name=\"EndDate\" />"

               + "<FieldRef Name=\"RecurrenceID\" />"

               + "<Value Type=\"DateTime\">"

               + "<Today />"

               + "</Value>"

               + "</DateRangesOverlap>"

               + "</Where>";

SPListItemCollection listItems = list.GetItems(query);

 

위의 코드대로 작성하게 되면, listItems( SPListItemCollection )의 목록은

오늘 날짜에 해당하는 일정을 가져오는 동시에, 오늘 날짜의 이전 되풀이 일정(한주 기준)들도 함께 나오게 됩니다.

만일 오늘이 목요일이라고 하는 경우, 그 주의 월, , , 에 있는 되풀이들도 모두 나오게 됩니다.

(되풀이가 아닌 경우에는 정상적으로 나옵니다.)

 

즉 되풀이에 대한 별도 필터링 작업이 필요해지게 됩니다.

 

해결 방법

GetItems를 실행하기 전에, 아래와 같이 설정하면 됩니다.

(CalendarDate 부분은 읽어오려는 기준 날짜를 넣어주시면 됩니다.)

 

query.CalendarDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);

query.RecurrenceOrderBy = true;

query.ExpandRecurrence = true;

 

위와 같이 넣고, GetItems를 하시면 정확히 원하는 되풀이만 가져올 수 있습니다.

728x90

원본 사이트 : http://weblogs.asp.net/erobillard/archive/2007/07/06/how-to-change-service-accounts-and-their-passwords-in-moss-and-wss-3-0.aspx


WSS 또는 MOSS용 웹 응용 프로그램의 응용 프로그램 풀 아이디 변경하는 방법

  1. SharePoint 중앙관리를 열어 "작업"을 클릭합니다.
  2. 보안 구성 항목 밑에 있는 서비스 계정을 클릭합니다.
  3. 웹 응용 프로그램 풀을 가르키는 라디오 버튼을 클릭한 뒤, 웹 서비스 중에 Windows SharePoint Services 웹 응용 프로그램을 선택한다음 응용 프로그램 풀에서 변경하고자 하는 웹 응용 프로그램 풀을 선택합니다.
  4. 아래에 있는 "이 구성 요소에 대한 계정을 선택하십시오" 밑 쪽에 위치한 계정을 설정해주시기 바랍니다. 기본적인 형태로 설정하는 경우에는 "미리 정의됨" 라디오 버튼을 선택한 뒤, 네트워크 서비스와 로컬 서비스중 하나로 선택하시고, 직접 입력하시려면 "보안 계정 구성" 라디오 버튼을 선택한 뒤, 사용자 이름과 암호를 입력합니다.
  5. 확인을 클릭해서 적용 한 뒤, IISRESET /NOFORCE를 실행하시기 바랍니다.

SharePoint 중앙 관리(SCA)의 웹 응용 프로그램의 응용 프로그램 풀 아이디 변경하는 방법

  1. stsadm -o updatefarmcredentials -userlogin domain\username -password password 를 입력합니다.
  2.  잠시 기다립니다.
  3. IISRESET /NOFORCE를 실행하시기 바랍니다.


MOSS 검색을 위한 기본 컨텐츠 액세스 계정 변경하는 방법.

  1. 중앙관리 페이지를 연 뒤, 왼편에 위치한, 공유 서비스 관리를 클릭해서 공유 서비스 관리에 들어간다.
  2. "검색"항목에 있는 검색 설정을 클릭한 뒤, "기본 컨텐츠 액세스 계정"을 선택합니다.
  3. 원하는 계정으로 변경한 뒤, 확인을 클릭합니다

MOSS 검색 서비스 계정 변경하는 방법

  1. SharePoint 중앙관리를 연 뒤, "작업"을 클릭합니다.
  2.  "서버 제공 서비스"를 클릭해서 들어간 뒤, "Office SharePoint Server 검색"에 들어갑니다.
  3. 아이디와 암호를 입력한 뒤 확인을 클릭합니다.



 

728x90
Shared Service Provider(이하 SSP)는 공유 서비스 공급자라는 이름으로 번역되어 등록되어 있다. MOSS 2007 전체 아키텍처 상, 이 SSP의 역할을 각기 흩어진 각종 웹 응용 프로그램의 내용 중에 공유해야 할 정보들을 묶고 있는 일종의 레파지토리(저장 장소)의 역할을 수행하는 것이 그 특징이다.

대략적으로 SSP가 담고있는 정보는 다음과 같다.
  • 사용자 프로필
  • My Site 설정값.
  • 검색 설정 및 검색 인덱스
  • MOSS 전체 기능 로그
  • 대상 그룹 설정
  • 엑셀 서비스 관리
  • BDC(Business Data Catalog) 관리
    .
이 기능은 WSS에는 없고, 오로지 MOSS 내에서만 존재하는 기능이다.
전체적인 기능들이 대부분 Enterprise 급의 데이터 관리에 필요한 사항들을 모아둔 것이 특징이다. 그래서 대부분 80 기본 사이트 보다는 별도의 웹 응용 프로그램을 이용해서 별도로 제작하는 것이 일반적이다. ( 같은 웹 응용 프로그램에 들어가면 운영 응용 프로그램과 겹쳐 진행되거나, 보안적으로 취약해질 수 밖에 없기 때문이다. )

그런데, 초기에 만들어진 SSP의 설정 문제로 삭제 후 다시 만들려고 할 때,
문제가 발생하게 된다. 한번 만들어진 SSP 삭제도 잘 되지 않을 뿐더러,
일부만 삭제되어 비정상적으로 실행되기도 한다.
그리고 새로 만든 SSP를 기본값으로 설정해도 예전 사이트는 여전히 비정상적으로
동작하는 경우가 발생한다.

이와 같은 문제가 발생하는 이유는 SSP가 가지고 있는 생성 규칙 때문으로 생각된다.

  • SSP에 영향을 받는 단위는 웹 응용 프로그램이다. ( 사이트 컬렉션, 사이트 단위 아님 )
  • 먼저 최초 SSP를 제작하게 되면, 기본적으로 이후에 생성되는 웹 응용 프로그램들이 모두 이 SSP를 바라보며, 동시에 이전에 생성한 웹 응용 프로그램들도 이 SSP를 바라보도록 구성된다.
  • 새로운 SSP를 추가한 뒤, 기본 값으로 설정하게 되면, 이전 웹 응용 프로그램은 모두 이전 SSP를 그대로 유지되고, 이후에 새롭게 생성한 웹 응용 프로그램 부터 새로운 SSP를 바라본다.
만일 SSP 설정이 잘못되어 처음 부터 다시 구성할 예정이라면, 최소한 이전에 구축한 사이트를 완전히 날리고 다시 설정해야 될 것이다. 또한 SSP의 기본값 변경을 통해 SSP 이전이라는 작업 자체가 되지 않는 사실도 인지할 필요가 있다.


728x90
예전에 가상 함수를 만들어 엘리베이트 태우는 방법을 프로젝트 할 떄 배웠다.
그런데, 그 방법은 좀 아름 답지 않게 만들 수 밖에 없었다.
그런데, 이번에 SharePoint SDK 문서를 읽던 중... 참으로 아름 다운 방법을 발견해서
적는다.

SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups
        = new SPSecurity.CodeToRunElevated(엘리베이트 태울 함수이름);
SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);

예를 들자면... 만일 Button Click Event 중에, DoElevate 라는 함수를 권한 상승 처리를 해야 한다면 다음과 같이 구성될 수 있다.

private void DoElevate()
{
      // 관리자 권한이 있어야만 실행되는 코드....
}

protected void Button1_Click(object sender, EventArgs e)
{
     SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups
        = new SPSecurity.CodeToRunElevated(DoElevate);
     SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}

728x90
MOSS 2007로 개발을 한 뒤에 테스트를 하다가 보면, 아래와 같이 썰렁한
에러 메시지만 보여주고 끝내는 경우가 많다.

사용자 삽입 이미지

이렇게 나오면, 도데체가 무엇때문에 에러가 발생했는지 전혀 알 수 없기 때문에, 아무런 조치를 취할 수 없게 된다.
이를 처리하는 방법은 해당 사이트에 있는 Web.Config를 수정해야 한다.

만일 80 포트를 쓰는 평범한 웹사이트(?) 라면,
  C:\Inetpub\wwwroot\wss\VirtualDirectories\80
위치에 web.config를 볼 수 있을 것이다. 사용하는 Drive 나 포트에 따라 경로를 변경하도록해서 해당 web.config를 띄운다.
그리고 아래와 같은 위치의 내용을 각각 수정한다.

1. CallStack = "false" 로 적힌 내용을 CallStack ="True" 로 변경한다.
사용자 삽입 이미지

2. CustomErrors mode = "On" 또는 "RemoteOnly"로 된 것을 "Off" 로 변경한다.
사용자 삽입 이미지

다 변경했으면 저장한 뒤 해당 페이지를 Refresh 하고 동작하면 된다.

그러면 단순하게 한줄로 나왔던 오류도....
사용자 삽입 이미지
 장엄하면서 다양한 내용이 쭈욱 나오게 된다.



* 이 글의 원본 블로그가 있는데, 즐겨 찾기가 날아가는 바람에 해당 사이트를 찾지 못하고 있다.
728x90

+ Recent posts

728x90