카테고리 아카이브: SharePoint 개발

대나무 달력 작용 SharePoint 원인으로 "예기치 않은 오류가 발생 했습니다"

오늘, 내가 몇 가지 향상 된 협업에 대 한 대나무 일정 웹 파트를 사용 하는 환경에서 일하십시오. 이 표준 매체/작은 두 부하가 통해와 농장, "응용 프로그램 서버" 인덱싱 및 InfoPath 및 클러스터 된 SQL 백 엔드.

클라이언트 설치를 통해 중 하나에 일부 재해 복구 소프트웨어 및를 사이트 모음의 특정 사이트에 대 한 깨진된 WFE 결과. 때마다 부하 영향을 받는 WFE 및 해당 사이트에 분산, 사용자가 본 문장으로 크게 빈 흰색 화면 "예기치 않은 오류가 발생 했습니다.". 다른 정보를 보여, 그냥 그 문장.

그들은 그것을 보고 달라고. 쉽게 문제를 재현 하 고 그 후에 추가 ?내용 = URL의 끝에 1. 이것은 어떻게 배운 그들은 대나무 웹 파트를 사용 했다. 나는 페이지에 다시가 서 지금, 갑자기, 그것은 좋은 정돈 되어 있는 오류 메시지를 보여 줬:

image

무슨 일이 일어 났 나 제어 오류 메시지가 추가 아닌 다른 표시를 했 겠는 ?내용 쿼리 문자열의 1 비트 =.

이것은 아마도 그 메시지를 받을 경우에만 매우 드문 가장자리 케이스, "예기치 않은 오류가 발생 했습니다" 추진 하 고 추가 ?내용 쿼리 문자열 1 = 고 어디 있는 지도 참조.

</끝>

내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

테크노 태그: ,

Microsoft.SharePoint.dll에 반사판을 사용 하 여

Redgate .NET Reflector 마이클이 깊다 넣어가지고 경고 및 조회에 대 한 기사 ("어떤 보기 사용할 수 있습니다 경고를 만들 때 ?"), 어떤은 그것의 자신의 공로에 재미. 그러나, 어떻게 그는 차근차근 Redgate의.NET Reflector를 사용 하는 프로세스를 통해 걸어 보고 더욱 관심. 단계적으로, 그는 SharePoint 목록에 대 한 견해 "subscribable 이어야 하는지 여부를 결정 하는 방법을 아래로 도구 트랙을 사용 하는 방법을 보여 줍니다." 더 나은 단어의 부족 (he explains this much better than I do 🙂 ).

이 시점에서 SharePoint 시대, 당신은 거의 귀 머 거리와 장 님 하지 들 었 또는 그 도구를 사용 하 여에 대 한 읽기 되어야 할 텐데. 그것은 물건을 전진 했다 하 고 내 자신의 감각은 그 그것은 여러 가지 방법으로 최후의 도구. 그러나, 만약 당신이 생각 당신이 그것 필요 하지만 정말 어떻게, 마이클의 기사는이 주제에 대 한 훌륭한 입문서 처럼 보인다.

</끝>

내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

달력 보기에서 일정 항목을 정렬

특정된 날짜에 패널 토론을 추적 하는 캘린더를 사용 하. 나는 두 세션: 오전, 오후. 세션 ID를 통해 알파벳 순으로 나열만 아침 세션을 표시 하는 보기를 만들려는. 이 달성 하기 위해 조금 까다롭습니다. (내가 진짜 확실 한 뭔가 놓친 하지 않으면).

쉽게 그냥 그 날의 이벤트를 보여주는 필터링 된 보기를 만들 수 있습니다.. 캘린더 모든 이벤트 표시 됩니다 그들은 모두 걸릴 장소 같은 시간에, 그것은 그들 나란히를 시간 슬롯에 나열. 좋아요. 까다로운 부분은, 기본적으로, 그것은 ID 형식에 하 고 싶어. 그래서, 내가 추가 하는 경우 "세션 02" 그리고 "세션 01" 캘린더, 그것은 그 순서 대로 그들을 보여준다합니다 (즉, 세션 02 및 다음 세션 01). 세션 ID 순서로 나열 하려면, 이러한 것 들을 시도 생각:

  1. 웹 사용자 인터페이스를 사용 하 여 보기 구성. 행운. 이 방법으로 항목을 정렬 하려면 옵션이 없습니다..

    때문에 작동 하지 않았다, 나는 지금 거기 기대 거기 것입니다 수 있도록 재정의 정렬에 어딘가에 CAML 쿼리. CQWP 종류의 변화를 만들 수 있습니다., 어쩌면 달력 뿐만 것입니다.?

  2. 웹 파트 편집, "내보내기에 대 한 보고" 기능 및 … BZZZT! XML을 내보낼 수 없습니다.. 내보내기 옵션이 없습니다..

    난 아직도 내가 찾을 수 있습니다 및 일부 CAML 쿼리 수정 희망 들으십시오. 때문에 웹 파트를 내보낼 수 없습니다, SharePoint Designer 단풍.

  3. 내가 샌드 박스 사이트에 일정 웹 파트를 추가 하 고 SharePoint Designer를 사용 하 여 해당 사이트를 엽니다.. 웹 파트에 대 한 태그를 보면 그리고 난 내가 찾고 찾아. 그것은 광 기를 인코딩 했습니다, 하지만 거기에: "<ListViewXml …. >인코딩된 광 기</ListViewXml>". 특히, 이 보석은:

<쿼리>
<어디>
<DateRangesOverlap>
<FieldRef 이름 "EventDate" = />
<FieldRef 이름 "EndDate" = />
<FieldRef 이름 "RecurrenceID" = />
<값 형식을 "DateTime" =>
<달 />
</값>
</DateRangesOverlap>
</어디>
<OrderBy><FieldRef 이름 "Session_x0020_ID =" /></OrderBy>
</쿼리>

(해독 했는 &lt;와 &gt의 고 선명도 술에 대 한 여러 줄으로 그들을 밖으로 분할).

추가 <OrderBy> 와 지금 세션 ID 별로 정렬, 안 내부 목록 항목 ID.

거 대 한 팁 o’ 모자를 베 키 Isserman 그녀의 의견 Isha Sagi의 블로그 게시물에 대 한: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html. 내가 넣어가지고 하지는 <OrderBy> 그녀의 코멘트 없이 바로 이곳에서.

이 더 명확 하 게 스크린 샷으로 곧 쓸 수 있도록 노력 하겠습니다., 하지만 내가 하지 않을 경우, 적어도 내가이 많이.

</끝>

SharePoint 기능 & 솔루션 관리 — CRUD에 U를 잊지 마세요 (또는 그 문제에 대 한 D)

우리 총칭 많은 SharePoint 솔루션에 대 한 생각 하는 시간을 보내고 — 만드는 방법, 어떤 도구를 사용 하, 그들은 배포에 실패 하면 어떻게 됩니까, 타이머 작업, 범위, 등. 우리 뿐만 아니라 그들을 철회 시켜야 하는 것을 잊지 쉽습니다 선행 비트에 대 한 생각 하는 너무 많은 시간을 보내고. 솔루션을 제거 하는 것은 아마 더 어려운, 개념적 디자인의 관점에서, 그들을 배포 하는 것 보다. 배포는 기본적으로 요리 책 외. 일반적으로, 기능 설치, 아마 목록으로 데이터를 로드 하는 기능 수신기를가지고, 그런 일종. 그러나, 축소 하는 것은 잠재적으로 더 복잡 한.

주어진된 솔루션 이런 아티팩트를 만들 수 있습니다.:

  • 콘텐츠 형식
  • 목록 정의
  • 사이트 정의
  • 목록에서 데이터
  • 심지어 수신기
  • InfoPath 양식

목록에 갑니다..

제대로 그 유물 인스턴스화하고 동안 분명 한 솔루션을 디자인 하는 것이 중요 하다, 그것은 업데이트를 고려 하 고 삭제 하는 경우에 중요 한. 경우 솔루션 새 목록 데이터 목록을 채웁니다, 솔루션을 취소 하면 어떻게 됩니까? 경우에 따라, 목록 삭제. 다른 경우에, 그것은 남아 있어야 그대로 역사적인 목적을 위해. 귀하의 비즈니스 요구 사항을 옳은 결정을 안내할 것입니다..

이 도움을, 솔루션을 SharePoint에 배포 하는 각 아티팩트를 나열 하는 매트릭스를 만듭니다. 유물 마다 목록 3 열, 만들기에 대 한 하나, 업데이트 및 삭제. 각각의 경우에, 해당 작업에 대 한 정확한 결과 확인.

분석의이 종류는 분명 최고의 솔루션을 SharePoint 팜에 배포 하기 전에 이루어집니다.. 그러나, 흡연 처럼, 그것은 결코 너무 늦 었 일을 제대로 일을 시작 하. 그 행렬을 만들고 누락 된 업데이트/삭제 시나리오를 해결 하는 계획을 개발. 어려운 문제를 해결 하는 것, 하지만 적어도 당신은 문제 주위에 상자 넣을 거 야.

</끝>

내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

테크노 태그:

빠른 수정: 웹 서비스 SharePoint와 그 작용, InvalidOperationException

백만 년 전, 내가 도움이 SharePoint Designer 워크플로 사용자 지정 작업을 통해 호출 된 웹 서비스 개발. 이번 주, 클라이언트 생산으로 이동 하 고 싶 었 (마지막으로!) 그래서 우리.

사용자 지정 작업 괜, 하지만 그것은 호출 하는 웹 서비스는 하지 않았다, 우리에 게이 오류를 주고:

System.InvalidOperationException: SQL server 구성 데이터베이스에서 읽기 권한이 있는 사용자가 서버 농장에 가입 된 컴퓨터에만이 작업을 수행할 수 있습니다.. 이 서버를 서버 팜에 연결 하기, SharePoint 제품 및 기술 구성 마법사를 사용 하 여, 관리 도구에서 시작 메뉴에 있는.
Microsoft.SharePoint.Administration.SPWebApplication.Lookup에서(Uri requestUri)

IIS에서 SharePoint 응용 프로그램 풀에 서비스를 추가 잊혀진 다는 것을 밝혀합니다. 일단 내가 그 랬 어, 그것은 잘 작동 했다.

이 MSDN 포럼 게시 필요한 단서를 준: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/2c97c004-7118-4e06-a62c-b2b0ac07ac99

</끝>

내 블로그를 구독.

트위터에 날 따라: http://twitter.com/pagalvin

테크노 태그:

신속 하 고 쉽게: Spitemlist의 Spfolder를 얻을

이 문제를 실행 하는 계속 하 고 Google 이해 무엇을 원하는 것으로 보인다, 그래서 이것을 쓸 것 이라고 생각.

지난 주 또는 2에서 디버깅 하는 이벤트 수신기의 많은 해 왔습니다.. 응급실은 문서 라이브러리에 대 한 정의. 문서 라이브러리에 있는 개별 항목 부모 폴더에 밀접 하 게 관련. 그래서, 다양 한 조작에 대 한 항목의 폴더를 항상 있어요. 디버깅 하는 동안, 특정 항목의 ID를 알고에 대 한 폴더의 메타 데이터를 업데이트 하는 데 필요한.

여기는 작은 콘솔 응용 프로그램 (팜의 서버에서 실행 하도록 설계) 두 개의 인수를 사용 하는: 필드에 할당할 값을 항목 ID, "승인 상태". 하드 코드 물건을 많이 하 고 없습니다 오류 검사.

코드는 하드 코딩 된 사이트를 조회, 하드 코딩 된 문서 라이브러리를 가져오고 표시 된 항목을 찾습니다.. 다음 해당 항목의 상위 폴더를 찾습니다 및 상태 값을 할당 합니다..

나를 위해 주요 교훈을 여기는 SPItem 폴더에 대 한 액세스를 하지 않습니다.. SPListItem.File를 사용 해야.

만약 아무도 관심 비판을 제공 하거나 항목의 폴더를 얻을 수 있는 더 나은 방법 제안, 코멘트를 남겨 주세요.

<코드>
사용 하 여 시스템;
사용 하 여 System.Collections.Generic;
사용 하 여 System.Text;
사용 하 여 Microsoft.SharePoint;
사용 하 여 System.Collections;

네임 스페이스 Conchango
{
    /// <요약>
 /// </요약>
 클래스 ManualFolderUpdate
    {
        정적 void 메인(문자열[] args)
        {
            문자열 msh = "ManualFolderUpdate (v1.0): "; // msh "메시지 머리글 ="

 콘솔.WriteLine(msh + "시작.  08/04/08에 마지막으로 바뀌었습니다.");

            문자열 url = http://localhost/xyzzy;

            사용 하 여 (SPSite oSPSite = 새로운 내용 SPSite(url))
            {

                사용 하 여 (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["문서"];

                    콘솔.WriteLine(msh + "문서 라이브러리를가지고.");

                    콘솔.WriteLine(msh + "Doc lib 항목 수: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    문자열 NewStatus = "xyzzy";

                    FolderID 시스템 =.변환.ToInt32(args[0].ToString());
                    콘솔.WriteLine("폴더 항목에 대 한 추구: [" + FolderID + "].");

                    SPListItem li docLib.GetItemById =(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    콘솔.WriteLine(msh + "상위 폴더 있어.");

                    NewStatus args =[1].ToString();
                    콘솔.WriteLine("설정 상태를 [" + NewStatus + "].");

                    콘솔.WriteLine("중단 업데이트 또는 CTRL-C를 커밋 반환을 누릅니다.");

                    콘솔.ReadLine();

                    thisItemFolder.Item["승인 상태"] = NewStatus;
                    thisItemFolder.Item.Update();

                    콘솔.WriteLine(msh + "폴더를 업데이트 완료.  종료.");

                } // Spweb를 사용 하 여

            } // 사용 하 여 SPSite

 콘솔.WriteLine(msh + "완료.");

        } // 메인

    } // 클래스 foldersync
} // 네임 스페이스
</코드>

</끝>

내 블로그를 구독.

테크노 태그:

SharePoint에서 사용자 지정 작업을 숨기기

몇 달 전, 클라이언트에 대 한 프로젝트에서 작업 하는 동안, 내가 만든 기능. 다른 것 들 중, 기능 정의 된 사용자 지정 작업 (이러한 사이트 설정 아래에 표시). 이 사용자 지정 동작에 대 한 유일한 목적은 기능 활성화 예상 대로 일 하 던 나에 게 설명 했다. 기본적으로, 디버깅의 원유 형태로 사용.

많이 내 당황 하, 이 디버깅 유물 UAT 및 생산 개발에서 그것의 방법을 만든 전에 누군가가 질문을 주위에 있어, "무슨이 xyzzy 링크입니다.?"

지금까지, 우리는 생산에 있어 그리고 난 정말 기능을 제거 하 고 싶지 않아, elements.xml을 해결 한 다음 다시 설치.

토 드 Bleaker 그것을 처리 하는 쉬운 방법으로 지적. 그의 말에:

"CustomActions는 복사 되지 않습니다 데이터베이스에, 그들은 Elements.xml 파일에서 직접 읽을 수 있으며 런타임 시 응용 프로그램 상태에 복사. 그래서, 비활성화할 필요가 없습니다., 제거, 다시 설치, 한은 CustomAction을 제거 하는 기능을 다시 활성화.. 그냥 Elements.xml 파일에서 제거 하 고 응용 프로그램 풀 재생(s) 영향. 범위에 있는 기능은 다음에, CustomAction을 더 이상 표시 되지 않습니다."

그의 지시를 따 랐 고, 물론, 그들은 일.

내 경우에는, 이것은 단지 하나의 WFE 부서 수준 설치. 이 문제는 미래에 여러 WFE의 찾아내는 경우에, 각 변경 해야 합니다 생각.

</끝>

내 블로그를 구독.

테크노 태그: ,

빠른 수정: SharePoint 사이트에 액세스를 던졌습니다. [HttpException (0x 80004005): 요청 시간 초과입니다.]

내 개발자 동료 중 이번 주 프로젝트에서 작업 하 고 건물 일부 미친 웹 파트에서 작업 하는 동안 시간 초과 문제에 부딪쳤다. 그의 웹 파트 괜찮다고, 하지만 "갑자기" 비관련된 사이트 되었다 매우 느리고 자주 초과이 오류와 함께:

[HttpException (0x 80004005): 요청 시간 초과입니다.]

로그인 하 고 여러 가지 다른 사이트 잘 했다 보았다. 페이지에 몇 가지 숨겨진된 웹 파트 했다 의심 및 사용 믿음직한 ?내용 = 1 디버그 기술, 사실 찾 았 어 요 11 페이지에서 웹 파트, 만 두는 표시 했다. 더 나은 (let's-hope-I-find-something-ugly-here-that-I-can-fix 관점에서), 3 닫힌된 웹 파트의 "오류"의 이름을 했다.

해당 웹 파트를 삭제 (자체는 의외로 오랜 시간이 걸렸습니다.) 그리고 그 문제 해결. 오늘 🙂

</끝>

내 블로그를 구독.

테크노 태그:

WSS에서 SSRS 웹 서비스를 호출 / 모스는 FBA 환경

우리 "CreateSubscription를 호출 하는 데 필요한" SSRS는 FBA에서 호스팅되는 웹 서비스 메서드는 사용자 지정 웹 파트에서 MOSS 환경 관리. 우리의 변형을 막아:

  • 401: 권한이 없습니다.
  • 개체 이동

"개체 이동" 그것은 그 말 때문에 메시지는 가장 흥미로운 "개체" (SSRS 서비스) "이동 했다" login.aspx에. 이 명확 하 게 우리가 했다 인증 문제가 어떤 종류의 의미.

내가 결국 깨달았다 즐겨찾기에 블로그 항목 FBA 환경 생활 범용 WSS 또는 MOSS 웹 서비스를 호출 하는 방법을 설명 하는 로버트가 렛에 의해. 참고 문서에 직접 연결할 수 없습니다 (로 06/09/08) 인증을 하기 때문에. 내가 제공 하는 링크 "모든 게시물에 제공" 보기 및 당신은 "폼 기반 인증을 사용 하는 액세스 모스 웹 서비스"에 대 한 검색 하 여 특정 문서를 찾을 수 있습니다..

다음은 우리를 위해 일 하는 코드:

ReportingService2006 rs = null; 
// 인증 인증 인증 = 새로운 내용 인증(); 
auth.Url = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
새로운 내용 CookieContainer();
LoginResult 결과 = auth.로그인("userid", "비밀 번호");
만약 (결과입니다.오류 코드 = = LoginErrorCode.NoError) 
{
// 오류 없음, 그래서 쿠키를 얻을.
CookieCollection 쿠키 = auth.CookieContainer.GetCookies(새로운 내용 Uri(auth.Url));
쿠키 authCookie = 쿠키[결과입니다.CookieName];
rs =
새로운 내용 ReportingService2006();
rs입니다.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs입니다.CookieContainer =
새로운 내용 CookieContainer();
rs입니다.CookieContainer.Add(authCookie);
}
시도
{
  rs입니다.CreateSubscription(보고서, extSettings, desc, eventType, matchData, parameters1);
}
catch (예외 예)
{
  Console.WriteLine(전입니다.Message.ToString());
}

두 일을 것 들을 해석:

  • 인증 서비스에 접속 하 여 말 우리의 웹 파트 필요, "이 봐, 토니, 그것은 나를!".
  • 인증 서비스 회신 말, "이 봐, 난 당신을 알으십시오. 아이 어떻게? 여기에 토큰이입니다."
  • SSRS 서비스를 호출 하 고 말, "토니 보낸 날, 여기에 토큰이입니다."

</끝>

내 블로그를 구독.

신속 하 고 간단: C#에서 SharePoint 개체 모델을 사용 하 여 웹 사이트를 구축

사이트 모음에서 새 SPWeb을 만들 수 있는 방법 보여줄 것 이다 조금 조각 코드에 대 한 검색. 내가 예상 내가 주제에 함께 작은 항목을 때리는 것 생각 대로 신속 하 게 또는 쉽게 찾지 못했습니다..

이 코드에서는 새 위 키 사이트:

 SPSite siteCollection;

    siteCollection = 새로운 내용 SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy 제목",
        "xyzzy 설명", 1033, SPWebTemplate.WebTemplateWIKI, false, false);

내 초기 검색 문구 처럼 "sharepoint 개체 모델을 사용 하 여 웹 사이트를 구축을 찾고 있었다 때문에 실패 했습니다." 와 같은.

만약 당신이 검색 "Webs.Add에 대 한()", 매우 유용한 블로그 항목의 번호를 찾을 거 야, MSDN 기사 및이 주제에 깊이에 서 SDK 설명서. 나는 확실히 추천 이 사이트.

</끝>

내 블로그를 구독.

테크노 태그: