List 템플릿 추가 중에 아래와 같은 오류가 끊임없이 발생하여,
추가 List 템플릿으로 web.Lists.Add(".....", "......", listTemplate) 메소드로 SPList를 추가할 수 없는 경우가 있습니다.
System.Data.SqlClient.SqlException: 테이블 'WSS_Content.dbo.EventReceivers', 열 'Name'에 NULL 값을 삽입할 수 없습니다. 열에는 NULL을 사용할 수 없습니다. INSERT이(가) 실패했습니다. 문이 종료되었습니다. 위치: System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 위치: System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, 위치: System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 위치: Microsoft.SharePoint.Utilities.SqlSession.ExecuteNonQuery(SqlCommand command) |
이 내용을 확인해 본 결과 List Template 안의 Event Add 하는 부분에서 아래와 같은 부분을 확인 할 수 있었습니다.
List Template 의 Element.xml 을 살펴본 결과 아래와 같습니다.
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <!-- 리스트 템플릿 정의부분 --> <ListTemplate Name="FreeTalk_Board" Type="8000" BaseType="0" OnQuickLaunch="TRUE" SecurityBits="12" Sequence="392" DisplayName="FreeTalk_Board" Description="FreeTalk_Board" Image="/_layouts/images/itann.gif" /> <!-- 이벤트 리시버 정의부분 --> <Receivers ListTemplateId="8000"> <Receiver> <Name>CollectBoardEventReceivers</Name> <Type>ItemAdded</Type> <SequenceNumber>50000</SequenceNumber> <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly> <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class> <Data /> <Filter /> </Receiver> <Receiver> <Name>CollectBoardEventReceivers</Name> <Type>ItemDeleting</Type> <SequenceNumber>50000</SequenceNumber> <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly> <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class> <Data /> <Filter /> </Receiver> </Receivers> </Elements> |
일단 <Receivers> .... </Receivers> 부분에 있는 내용을 모두 삭제해 보고 리스트를 추가해 본 결과,
위의 오류가 발생하지 않았습니다.
이번에 다시 추가해서 적용해 본 결과 오류가 재발하였습니다.
그래서 이번에는 각 Event의 이름을 다르게 적용해 보았습니다.
.... <Receivers ListTemplateId="8000"> <Receiver> <Name>FTEventItemAdded</Name> <Type>ItemAdded</Type> <SequenceNumber>50000</SequenceNumber> <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly> <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class> <Data /> <Filter /> </Receiver> <Receiver> <Name>FTEventItemUpdated</Name> <Type>ItemDeleting</Type> <SequenceNumber>50000</SequenceNumber> <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly> <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class> <Data /> <Filter /> </Receiver> </Receivers> .... |
확인해 본 결과 위와 같이 변경하니, 그 이상의 오류는 발생하지 않았습니다.
그 이후에는 이름이 동일해도 오류가 발생하지 않았습니다.
초기에 리스트 템플릿 상에서 동일한 이름으로 등록할 때 발생되는 오류로 생각됩니다.