2011년 4월 4일 월요일

Your search cannot be completed because this site is not assigned to an indexer.

증상

Search 서비스에 API를 통해 검색을 할 때 제목과 같은 에러가 발생 하는 경우 입니다.

image

원인

Search설정에는 문제없이 되는 것 처럼 보이는데요 이럴 땐 일단 Conent DB의 Search 서버 설정이 제대로 되어 있는지 확인 해야 합니다.

해결

Central Administratoion > Application Management > Manage content database >

image

만약 “Searh Server” 설정이 비활성화 되어 있으면 Central Administration > System Settings > Manage services on server 에서 SharePoint Foundation Help Searh 서비스가 제대로 시작되어 있는지 확인 해 보시기 바랍니다.

2011년 4월 3일 일요일

Field Name, InternalName, StaticName, DisplayNane, _x0020_

Custom Field정의에 대해서 알아 보겠습니다.

Custom Field를 정의 할 때 필수 attribute는 Name, Type, ID 입니다.

ID는 “{}”로 둘러 싸인 GUID값이고, Type은 SharePoint에서 사용 가능한 Type입니다.

MSDN의 File element reference

<Field ID="{1511BF28-A787-4061-B2E1-71F64CC93FD5}"
Name="DateOpened"
DisplayName="Date Opened"
Type="DateTime"
Format="DateOnly"
Required="FALSE"
Group="Financial Columns">
<Default>[today]</Default>
</Field>

Field를 customize할 때 가장 유의 해야 할 부분은 바로 Name 속성입니다.


Name


Name은 SPField 개체를 통해 InternalName 속성로 노출 하는 값으로써 Site내에서 Unique 하고 0-9 숫자와 알파벳 글자만을 사용 할 수 있습니다. 만약 다른 캐릭터가 오면 _x0000_ 형태로 인코딩을 해버립니다. 즉, “File Type” 이라는 이름은 “File_x0020_Type”으로 바꾸는 것이죠. 이건 한글 필드이름일 때는 더욱 문제가 됩니다. 디코딩을 해보기 전까지는 전혀 어떤 글자인지 모를 이름이 “InternalName”에 들어가 있는 것입니다. 그리고 마지막으로 주의해야 할 것은 이름의 글자수가 32자리 라는 것입니다. 이상 넘어가는 글자는 그냥 잘라 먹습니다.


StaticName


StaticName은 별도로 지정하지 않으면 Name 값이 동일하게 들어 갑니다. InternalName은 읽기 전용이라 field 생성 후 변경이 불가능 하지만 이 StaticName은 API를 통해 변경이 가능합니다. 이 속성은 SPFieldCollection.GetField()  메서드에서 해당 field를 찾아 올 때 InternalName과 함께 사용 할 수 있습니다.


image


DisplayName


DisplayName은 UI에서 노출 되는 field 이름입니다. 당연히 공백을 포함 모든 캐릭터를 사용 할 수 있습니다.


결론


Name 속성은 무조건 공백없는 알파벳, 숫자로 만들어야하고 32자를 넘지 말아야 합니다. StaticName은 별도록 지정 말고 Name과 같이 사용하는 것이 좋습니다.

2011년 4월 1일 금요일

the field with ID defined in feature was found in the current site collection or in a sub site

증상

VS에서 Field를 배포 하려 할 때 첫번째엔 문제가 없는데 두번째 부터 아래와 같이 에러가 나면서 Feature Activation에 실패 하는 경우가 있습니다.

‘Error occurred in deployment of step ‘Activate Features’: the field with ID <New GUID> defined in feature <FeatureGUID> was found in the current site collection or in a sub site.

원인

원인은 Field 선언시에 ID값을 선언 할 때 "{}” 로 둘러 싸지 않아서 그렇습니다.

<Field ID="A409C79A-F1C3-43B9-A602-160FF81E0AF8" Name="UserID" Type="Text" />
VS의 버그에 가깝습니다.

해결

해결 책은 일단 ID값을 “{}”로 감싸고 해당 솔루션 패키지를 Retract(취소)한 후 VS를 다시 켠 후 다시 Deploye(배포) 하면 해결 됩니다.

참고

http://support.microsoft.com/kb/2022443