SharePoint

ทำ Breadcrumb ให้ถูกต้องใน Publishing site

Submitted by ezybzy on Wed, 2015-12-23 - 15:31

Breadcrumb เป็นรูปแบบการกระโดดย้อนไปยังหน้าเว็บที่ผ่านมาที่คลาสสิคอีกรูปแบบหนึ่ง จนทุกวันนี้ในหลาย ๆ เว็บที่มีความเป็นโครงสร้างก็ยังคงมีการใช้งานมันอยู่ แม้ว่า SharePoint 2013 จะพยายามเอามันออกไปจากหน้าจอ แต่จนแล้วจนรอดด้วยความต้องการของลูกค้า หรือของทางผู้ออกแบบก็ยังหยิบยกมันขึ้นมาใช้ แต่จะทำอย่างไรจึงได้ Breadcrumb ที่ถูกต้องเหมาะสมกับสถานการณ์มาใช้ใน SharePoint 2013 ล่ะ?

แก้การแสดงผล Search ให้ได้ดั่งใจ

Submitted by ezybzy on Tue, 2013-08-06 - 15:49

บ่อยครั้งที่เมื่อใช้ SharePoint Search ค้นหาข้อมูลใน Portal เราพบกับข้อมูลจริง แต่คำบรรยายข้อมูลดูชวนคลื่นเหียนอาเจียน วิธีการปรับการแสดงผลคำบรรยายให้ดูดีมีสาระนั้นสามารถทำได้หลายแนวทาง กรณีนี้เราจะเลือกวิธีที่สั้นที่สุด ไม่ต้องสร้างหน้าค้นหาเพิ่ม แก้ XML, XSL บน Search Core Web Part อย่างเดียว

ขั้นแรก เราต้องสร้าง Managed Property แล้ว Map กับ Crawled Properties (1 ต่อ 1) อยากใช้กี่ค่าก็สร้างเข้าไป (จำชื่อไว้ด้วยเพราะจะเอาไปใช้ต่อ)

ขั้นที่สอง เปิดหน้าแสดงผลลัพธ์เนื้อหา ทำการแก้ไข Search Core Web Part ในส่วนของ XML และ XSL โดย

  • ปรับ Fetched Properties เพิ่มชื่อ Managed Properties ที่เราสร้างไว้ในขั้นตอนที่แล้ว
  • แก้ XSL แสดงผล มองหา <xsl:when test="hithighlightedproperties/HHTitle[. != '']"> และ <xsl:when test="hithighlightedsummary[. != '']"> แถว ๆ นั้นจะมี xsl:call-template ปรับค่า select เป็นการเชื่อม string ตาม property ที่เราสร้างขึ้นมา (ลองตรวจสอบ XML ผลลัพธ์การค้นหาก่อน -- ไม่ได้อธิบายในบทความนี้) เราอาจจะต้องเพิ่มเงื่อนไขเข้าไปเพื่อที่เมื่อตรวจสอบพบว่ามีค่า property ของเรา จึงส่งข้อความของเราเข้าไป แต่ถ้าไม่มีก็กลับไปใช้รูปแบบเดิม

เพียงเท่านี้ เราก็จะผลลัพธ์ที่ดูเนียนตาขึ้นอีกหน่อย

Blog Tags

แก้คำผิด: Code Snippet: Get User Credentials Using the Default Secure Store Provider

Submitted by ezybzy on Wed, 2013-07-24 - 13:58

จาก Code Snippet: Get User Credentials Using the Default Secure Store Provider

ได้ลองเอา code จากลิงค์ด้านบนไปใช้เพื่ออ่านค่า username, password จาก Secure Store Service แต่พบว่า Code ตัวอย่างนั้นไม่สมบูรณ์ เพราะขาดข้อมูลบางอย่างไป นี่คือสิ่งที่เขาทำตกหล่นไป

  1. ขาดการ Reference ถึง Microsoft.Office.SecureStoreService (อยู่ใน GAC แต่ต้องไปคุ้ยหาเอาจากใน Windows\Assembly)
  2. ต้อง using Microsoft.Office.SecureStoreService; ด้วยอีกอัน

หลังจากนั้นบรรทัด

ISecureStoreProvider provider = SecureStoreProviderFactory.Create();

จะใช้ได้เป็นปรกติ

Blog Tags

Quick Note: การทำ Cross-site collection Publishing

Submitted by ezybzy on Mon, 2013-07-01 - 17:08

วิธีทำมีมากมายแต่ตัวที่แนะนำให้อ่านคือซีรีย์ How to set up a product-centric website in SharePoint Server 2013 ซึ่งก็ผ่านด้วยดี

แต่ก็พบจุดที่มีปัญหาทั้งบน Publishing Site และ Product Catalog หากมีการเปลี่ยนแปลง Region จะสามารถทำการ Connect ในเมนู Manage catalog connections โดยจะเจอ Error ประหลาดที่ไม่สื่อความหมายใดเลย ประมาณว่า

The value must be at most 64 characters long. Parameter name: Name

ดูไปดูมันก็คล้าย ๆ Exception ที่เกิดจาก LINQ นะ แต่นั่ง Refactor อยู่นานก็หาเหตุผลไม่ได้ว่าทำไม ก่อนหน้าประโยคนี้ใน ULS ก็มีการล็อคข้อความไว้อีกอย่างซึ่งก็ไม่ได้มีข้อบ่งชี้ใดเป็นพิเศษให้หาเจอว่ามาจากไหน ก็เลยทำการลบ Site Collection ทำใหม่โดยไม่เปลี่ยน Region หลังจากนั้นทุกอย่างก็ใช้ได้เป็นปรกติ

เมื่อทำการเชื่อมต่อ Catalog เข้ากับ Publishing Site ของเราแล้ว ระบบจะสร้างหน้าเว็บให้ 2 หน้า (และ Page Layout ของแต่ละหน้า) คือหน้า Catalog เอาไว้แสดงรายการสินค้าหลาย ๆ รายการ และ Catalog Item ไว้แสดงรายละเอียดสินค้าทีละรายการ ตัวอย่างที่พบเห็นทั่วไปมักจะสอนการปรับแต่ง Content Search Web Part กัน อันนี้ก็ไม่ได้ยากเย็นอะไรมากมาย เราต้องแก้ไข Control Template และ Item Template (อยู่ใน _catalogs/Display Templates/Content Web Parts) วิธีการลองอ่านย้อนจาก Stage 11 ในชุดบทความข้างต้นได้

ที่ดูจะมีปัญหาจริง คือหน้า Catalog Item ซึ่งถ้าจะลองดุ่ย ๆ จากหน้าตา SharePoint เลยอาจจะเดาไม่ออกว่าต้องไปแก้ที่ใด จริง ๆ แล้วเราสามารถใช้ SharePoint Designer เข้าไปแก้ Page Layout ของ Catalog Item ได้เลย โดยความเปลี่ยนแปลงที่ต่างไปจาก 2010 ก็คือ ใน 2013 นี้ ระบบสามารถสร้าง Page Layout (ไฟล์ .aspx) ได้จากไฟล์ HTML ที่ชื่อเหมือนกัน (ที่ทำเช่นนี้สามารถนำไปประยุกต์กับการทำ Master Page ได้ด้วย ดูรายละเอียดเพิ่มเติมเรื่อง Design Manager) ทำให้ Designer สามารถใช้ Web Editor ที่ชื่นชอบในการออกแบบหน้าเว็บได้โดยอิสระจากนักพัฒนา เพียงแต่ความยากในเรื่องนี้คือ การที่ Designer จำเป็นต้องใส่ Markup เฉพาะ เพื่อให้ตัว Design Manager สามารถอ่านไฟล์ HTML แล้วแปลงเป็น Page Layout ที่ถูกต้องได้ รายละเอียดตรงนี้สามารถดูได้จาก How to: Create a page layout in SharePoint 2013 และ SharePoint 2013 Design Manager snippets

สำหรับมือใหม่อาจจะงง ว่าแล้วเราจะทราบได้อย่างไรว่าต้องใช้ Markup ใด คำตอบคือ คงต้องผสมระหว่าง Snippet ที่สามารถใช้ Design Manager (ทำงานผ่านหน้าเว็บ) ช่วยสร้าง (มันจะสร้างเป็น code มาให้เรานำไปแปะใน Web Editor ได้เลย) และอาจจะต้องดัดแปลงจาก Page Layout ที่มันสร้างให้ เพราะเอาเข้าจริง code สำเร็จรูปนั้นก็เยอะเกินไป ต้องลดทอนลงมาพอสมควร

เมื่อแก้ไขหน้าเสร็จแล้วก็อย่าลืมนำ url ของหน้าเว็บที่ใช้งาน Page Layout ข้างต้นกลับไปผูกกับ Terms ใน Managed Metadata ของ Catalog ด้วย เพื่อให้ Navigation ของไซต์กดใช้งานได้

Blog Tags

การแก้ปัญหาเมื่อ SharePoint ไม่รู้จะใช้ Managed Metadata Service ตัวไหน

Submitted by ezybzy on Tue, 2013-06-25 - 14:30

ใน SharePoint Farm ปัจจุบันมี Managed Metadata Service อยู่ 1 ตัว มีความต้องการว่าเราจะสร้าง Managed Metadata Service สำหรับ Web Application ที่เราต้องการจะศึกษา Cross-site publishing ผมก็เลยทำการสร้าง MMS ขึ้นมาอีกตัว ทำการ Web Application อันใหม่แล้วผูก MMS ตัวนี้เข้ากับ Web Application นั้นโดยไม่ใช้ MMS ตัวเดิม

ปัญหามาเกิดเมื่อเราทำการสร้างไซต์ที่เป็น Product Catalog เมื่อเปิดใน Term Store เราพบว่า ไม่มีการสร้าง Term พิเศษให้โดยอัตโนมัติ ใน Event Log ไม่ได้แจ้งอะไรเป็นพิเศษ แต่ใน ULS เราพบ Event น่าสนใจอันหนึ่ง ซึ่งเกิดขึ้นในกระบวนการสร้าง Site Collection นี้ (ใช้ ULS Viewer ดักค่าตั้งแต่กดปุ่มสร้างไซต์จนถึงหน้าจอที่รายงานผลการสร้างไซต์)

{DATE/TIME} w3wp.exe (0x099C)   0x17E0  Web Content Management  Publishing Provisioning aaub3   High    Failed to add term set Product Hierarchy. Unable to fetch the Term Store of the Site Collection {GUID}

ก็ค่อนข้างชัดเจนว่ามันไม่รู้จัก Term Store แต่จะทำอย่างไรให้มันรู้จักล่ะ? ไปพบบทความของ Jason Lee ซึ่งพบอาการเดียวกันเป๊ะ ก็เลยจัดการตั้งค่าตาม แล้วสร้าง Site Collection ใหม่ ผลลัพธ์ก็ออกมาเป็นดังที่ควรจะเป็น

บทเรียนสำหรับวันนี้คือ นอกจากจะตั้งให้ Permission แก่ Term Store แล้ว เรายังต้องตั้ง Properties ของ Service Application Proxy ด้วย เผื่อเกิดข้อผิดพลาดที่ไม่คาดคิดเช่นนี้

Blog Tags

ปัญหา Farm Solution Deployment ใน SharePoint 2013 เมื่อแยก Role

Submitted by ezybzy on Fri, 2013-06-21 - 16:53

ช่วงนี้ได้มีเวลาพัฒนา Declarative Workflow Action ตามวิธีของ SharePoint 2013

ผมแบ่งผู้ใช้สำหรับติดตั้ง SP_Inst, ผู้ใช้สำหรับต่อฐานข้อมูลหลัก SP_Farm, ผู้ใช้สำหรับ AppPool, WebPool, และผู้ใช้ที่เป็นนักพัฒนา แล้วก็ได้มีการให้สิทธิ์ SPShellAdmin ลงใน Content Database ของ Site Collection รวมถึง Admin Content Database และ SharePoint Configuration Database ด้วย

ไม่แน่ใจว่าเป็นผลจากการแบ่ง Role อย่างเคร่งครัดหรือไม่ที่ทำให้พบเรื่องน่าปวดตับอยู่ได้หลายเรื่องดังนี้

  1. Deploy ไม่สำเร็จ อันนี้ต้องเพิ่ม SPShellAdmin ให้กับฐานข้อมูล AppManagement เพิ่มไปด้วย
  2. Retract Solution ไม่สำเร็จ อันนี้ต้องเพิ่มสิทธิ์บน Admin Content Database นะ
  3. ทำไมมันไม่ยอมติดตั้ง Solution Package อันใหม่ให้เลย! อันนี้ไม่แน่ใจว่าเป็นบั้กหรืออย่างไร แต่มันทำให้เสียเวลามากในการทดสอบ เพราะสิ่งที่ได้ทำแก้ไขไปมันกลับไม่แสดงผลออกมา มาทราบภายหลัง (จากการสังเกต) ว่า อาจจะเป็นบั้กของ Visual Studio วิธีที่ผมแก้คือ สั่ง Deactivate Feature, Retract Solution, Remove Solution เอง (ผ่าน Central Administration, PowerShell แล้วแต่สะดวก) ปิด Visual Studio แล้วเปิดใหม่ ทำการ Build ทุกอย่างใหม่แล้วสั่ง Deploy แล้วก็พบว่าจะได้ Solution Package ตัวใหม่

รู้สึกว่าการยึดตาม Practice ของ Microsoft นี่จะสร้างความวุ่นวายให้กับชีวิตอีกครั้งหนึ่งแล้ว

Blog Tags

ตั้ง eDiscovery บน SharePoint และ Exchange 2013

Submitted by ezybzy on Wed, 2013-06-19 - 11:44

eDiscovery เป็นฟีเจอร์ที่ใช้ค้นหาหลักฐานในองค์กร หลักฐานเช่นไฟล์เอกสาร รวมถึงอีเมล์ที่ใช้สนทนาไปมา เป็นการนำความสามารถของ Search มาใช้งานในอีกขั้น

การตั้งไซต์ eDiscovery นั้นค่อนข้างง่าย แต่การเตรียมตัวก่อนที่จะเกิดไซต์ดังกล่าว ให้พูดตรง ๆ คือก็ลากเลือดพอสมควร หากเชื่อตาม Test Lab Guide: Configure eDiscovery for SharePoint Server 2013 ก็จะพบปัญหาบางประการ เนื่องจาก Step 2 และ 3 เขียนเหมือนกันเป๊ะ แถมหากแยก Account ในการสั่งงานตามข้อปฏิบัติ (แยก Install Account ออกจาก Farm Account) ก็จะพบปัญหาในขั้นตอนการสั่ง Get-SPAppPrincipal เนื่องจากไม่มีสิทธิ์เข้าถึง Database ของ Site Collection ที่ต้องใช้งาน (แน่นอนว่า Error Message ที่แสดงบน PowerShell ไม่ได้บ่งบอกเรื่องนี้ ต้องเปิดดูใน Event Viewers หรือ ULS เอาเอง)

สรุปบทเรียน คือ การตั้งไซต์สามารถทำไปล่วงหน้าได้ทันที ส่วนคำสั่ง PowerShell ที่เหลือทั้งบน SharePoint และ Exchange สามารถทำในภายหลังได้ ในส่วนของ Url ที่ต้องกรอกในช่วง PowerShell นั้น สำหรับทางฝั่ง Exchange ดูจะไม่มีประเด็นให้ต้องเป็นห่วง แต่บน SharePoint ผมก็ยังไม่แน่ใจว่า Site ที่อ้างถึง หากมีหลาย WebApplication เราต้องจัดการกับมันเช่นไร ผมเลยสั่งคำสั่งหลาย ๆ ครั้ง ให้ครอบคลุมกับจำนวน WebApplication ที่เกี่ยวข้องกับเรา แต่ก็ยังพบปัญหาว่าผมสามารถสร้าง Source ได้แค่เพียง Site Colleciton เดียวเท่านั้น

ส่วนฝั่ง Exchange ที่พบปัญหา เจออาการ UPN ของ Account ที่ใช้สร้าง Source ไม่ตรงกับค่า UPN ที่ควรจะเป็นเนื่องจากระบบของเราได้มีการเปลี่ยนชื่อโดเมนไปด้วย ทำให้ต้องไปปรับ UPN ของ Account ให้ถูกต้องเสียก่อนแล้วก็รอรอบการตรวจสอบ Claims ซักพักใหญ่ (รอไป 1 คืน จริง ๆ อาจจะแค่ชั่วโมงสองชั่วโมงก็พอ) หลังจากนั้นก็จะสามารถเพิ่ม Mailbox ที่ต้องการค้นหาลงไปได้

Blog Tags

จับ SharePoint Workflow 2013 มาชนกับ User Profile

Submitted by ezybzy on Mon, 2013-06-10 - 20:57

ได้รับความต้องการสนุก ๆ มาข้อหนึ่งในการทำ SharePoint Workflow 2013 นั่นคือ มันต้องหา Manager ของ User ที่เป็นคนสร้างเอกสารให้ได้ เพื่อขออนุญาตทำกิจกรรมบางอย่าง (สร้าง Task ให้ Manager นั่นเอง)

ตอนแรกก็คิดว่าถึงคราวที่จะต้องขุด REST API ของ SharePoint ขึ้นมาผสมกับ Call Web Service ซึ่งเป็น Action ใหม่ใน SharePoint Workflow 2013 แล้วก็เป็นเช่นนั้น แต่หนทางมันกลับไม่ได้ง่ายอย่างที่คาด

จากบทความ Work with user profiles in SharePoint 2013 มองดูรอบ ๆ มีตัวอย่างหนึ่งที่เราใช้ได้เลยนั่นก็คือ

REST: GET http://<siteUri>/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor([email protected],propertyName='PreferredName')[email protected]='domain\user'

ทำการแก้ไขนิดหน่อยเปลี่ยนจาก PreferredName เป็น Manager แทน แต่ทีนี้ปัญหาที่พบก็คือ url ด้านบนนี้ โดยค่าปริยายผลลัพธ์ที่ SharePoint จะตอบกลับมาจะเป็น XML ซึ่งไม่สามารถนำมาใช้ต่อบน SharePoint Designer Workflow ได้

เราจำเป็นต้องปรับเปลี่ยนนิดหน่อยโดยการปั้น Request Header เพิ่มเข้าไปเพื่อบังคับให้ผลลัพธ์ที่ตอบกลับมาเป็น json ตามแบบที่ Action ตัวนี้คาดหวังไว้ วิธีการตามที่ Serge Luca ได้อธิบายไว้ใน Calling the SharePoint 2013 Rest API from a SharePoint Designer Workflow นั่นคือ ใช้ Action ชื่อ Build Dictionary สร้าง Dictionary ที่มีคีย์และค่าดังนี้

Accept : application/json;odata=verbose
Content-Type : application/json;odata=verbose

พรุ่งนี้มาดูผลว่า จะได้ตามที่ Luca แนะนำไว้หรือไม่ ยังไม่พอครับ ต้องมี header พิเศษอีกตัวนั่นคือ Authorization (ดู Kevin.Talbot) แล้วก็จะมีประเด็นอีกเรื่องคือ Login Name ที่ได้มามันไม่ใช่ full domain แต่กลายเป็น claim แทนซึ่งมีปัญหาตรง # ซึ่งอาจจะต้องแก้ให้เป็น %23 แทน

เมื่อเราใช้ Action ชื่อ Get Item from Dictionary ดึง Manager ออกมาแล้วจากผลลัพธ์ของ Call HTTP Service จะพบว่ามันอยู่ในสภาพ domain\username ทำให้ต้องใช้ Replace String เปลี่ยน \\ เป็น \ แล้วเมื่อจะนำไปใช้ในการสร้าง Task หรือแม้แต่การตรวจสอบ User จำเป็นต้อง Cast ค่าให้กลับมาเป็น Login Name อีกหน มิเช่นนั้น Workflow อาจจะถูก Suspended ได้

ออ นอกจากนี้ยังมีตัวอย่างการทำ POST เข้าหา REST เช่นกัน ดูตัวอย่างของ Borislav Grgić ก็สามารถนำไปทำกิจกรรมบางอย่างได้ แต่ทั้งนี้ก็ขึ้นกับสิทธิ์ของคนสั่ง Workflow นั่นเองว่าจะสามารถทำได้หรือไม่

Blog Tags

ข้อควรระวังในการลบ User ออกจาก Site Colleciton

Submitted by ezybzy on Fri, 2013-06-07 - 14:40

เป็นปรกติที่บริษัทรับพัฒนา SharePoint อาจจะทำการย้าย Farm, Site Collection ที่พัฒนาจากที่บริษัท ออกไปติดตั้งยังไซต์ลูกค้า ซึ่งแน่นอนว่า Active Directory ที่ใช้งานนั้นเป็นคนละตัว ทำให้มี User ที่เกิดจาก Active Directory ของบริษัท ติดไปในระบบที่ส่งมอบแก่ลูกค้าด้วย ผู้ดูแลระบบผู้หวังดีอาจจะตรวจพบ User กลุ่มนี้และใจดีทำการลบออกจากระบบให้ นั่นก็นำมาซึ่งปัญหาอันแสนน่ากลัว

ปัญหาที่พบได้บ่อยคือ Workflow ที่เคยทำงานได้ดีใน Site Collection นั้นเกิดหยุดทำงานพร้อมกันโดยมิได้นัดหมาย เมื่อลองใช้ SharePoint Designer เปิดดูอาจจะพบอาการเปิดหน้าเว็บไม่ได้ (หน้าตาใน SharePoint Designer มันมี View บางส่วนแสดงผลเป็นหน้าเว็บได้ด้วย) ลองกดดู Workflow Settings ทุกจุดใน Site ก็พบ error ประมาณเดียวกันคือ User cannot be found ซึ่งใน ULS ก็ไม่ได้บอกอะไรที่มีประโยชน์นัก

หาสาเหตุอยู่ตั้งนานกว่าจะทราบสาเหตุ พอมาเปิดดู Workflow ทั้งหมดในระดับ Site Collection จึงเพิ่งสังเกตว่าผู้สร้าง OOB Workflow ทั้งหลายเป็น User ที่หายไปแล้ว ทางแก้คือ ใช้ User ที่มีอยู่ในระบบเข้าไปจัดการ Publish Workflow ดังกล่าวใหม่ทั้งหมด หลังจากนั้นการทำงานของ Workflow จึงกลับมาเป็นปรกติอีกครั้ง

ข้อเตือนใจคือ อย่าเผลอหวังดีไปไล่ลบ User อีก เว้นเสียแต่จะรู้ว่าควรจะต้องแก้อะไรอีกบ้าง

Blog Tags

อันเนื่องจากการติดตั้ง SharePoint 2013 ใหม่อีกรอบ

Submitted by ezybzy on Fri, 2013-05-10 - 15:38

เนื่องจากพบว่า AD ตัวเก่าหลังจากยำ Exchange 2013 แล้วใช้งานตัว Exchange ไม่ได้จนยากเกินเยียวยา ทางผู้ดูแลจึงขอความร่วมมือให้ติดตั้ง SharePoint 2013 ใหม่อีกรอบบน AD อันใหม่ กลับมาทำคราวนี้ก็ยังประหม่าเช่นเคย แต่ก็ได้นำประสบการณ์เก่า ๆ กลับมาลองอีกครั้งเพื่อที่จะช่วยให้ใช้เวลาติดตั้งได้น้อยลง

ขั้นตอนการติดตั้งแทบจะเป็นแบบเดิมทุกประการ มีที่แตกต่างไปในครั้งนี้คือ มีการแยก Workflow Manager ออกจากเครื่อง SharePoint (คราวก่อนรวมไว้บนเครื่อง SharePoint เลย) ซึ่งจะพบปัญหาในขั้นตอนการสั่ง Register-SPWorkflowService อันนี้ก็ลักไก่ไปเพิ่มสิทธิ์ db_owner หรือ SPDataAccess ใน Content Database ของ SPSite ที่ต้องการผูกบริการเอาดื้อ ๆ เลย เพราะแอคเคาท์ติดตั้ง SharePoint ไม่มีสิทธิ์บน SharePoint Content Database (และหลาย ๆ Database) โดยปริยายเหมือนที่เคยคาดไว้

สำหรับ User Profile Service Application และบริการที่เกี่ยวข้อง (Managed Metadata Service, Search, และอะไรซักอย่าง) ก็สร้างขึ้นทีหลังเช่นเคย (รวมถึง Workflow ด้วยเพราะต้องรอ User Profile Service Application เสร็จก่อน) ครั้งนี้ได้บทเรียนมาว่า ให้เปิด User Profile Service ใน Services on Server รอไว้ก่อนจะสร้างได้เลยเพื่อไม่เป็นการเสียเวลา พอสร้างเสร็จตรวจเช็คว่าสามารถเข้าไปในหน้าของ User Profile Service Application ได้ก็ค่อยกลับมาเปิด User Profile Synchronization Service อีกที ซึ่งแน่นอนว่าอาจจะเปิดไม่สำเร็จ ทางแก้ก็คือ Restart เครื่อง SharePoint ซักรอบแล้วทำใหม่ ส่วนในกระบวนการทดสอบ Synchronization จริง ๆ ต้องใช้ ADSI Edit ที่อยู่บนเครื่อง Active Directory ทำการเพิ่มสิทธิ์ในการ Replication Directory Change ให้ (อันนี้ค่อย ๆ ลองทำ ต้องตรวจจาก Log ที่เกิดขึ้นว่ามันฟ้องว่าติดปัญหาที่ใด)

กลับมาที่ Workflow Manager อีกครั้งตอนสร้าง จะสร้างกลุ่มจัดการอยู่ในระดับโดเมนหรือแค่ Local Machine ก็ตามสะดวก แต่โดยปริยายของ Powershell Script ที่ถูกสร้างขึ้นมาจะให้ BUILTIN\Administrators ที่อยู่ในเครื่องที่ติดตั้ง Workflow Manager มีสิทธิ์จัดการ Service ดังนั้นจึงจำเป็นต้องเพิ่มแอคเคาท์ที่จะใช้สั่ง Register-SPWorkflowService เข้าไปในกลุ่มนี้ด้วย

มาจุดที่ระทึกอีกจุดคือ การทำให้เครื่องพร้อมใช้งานสำหรับการพัฒนา App ได้อันนี้ทำตามบทความใน MSDN ได้เลย เพียงแต่ว่าเมื่อกำหนด SPAppDomain ควรตั้งเป็นโดเมนที่เหมือนจะมีอยู่จริง ใช้เป็นชื่อเครื่องไม่ได้ เพื่อความเรียบง่ายในการจัดการอาจจะไปเพิ่ม Record บน DNS ด้วยเพื่อให้เครื่องที่อยู่ในวง DNS เดียวกันสามารถเรียกหา App ได้โดยสะดวก (สำหรับ SharePoint-hosted) ส่วน Provider-hosted ตอนนี้ยังติดปัญหาอยู่ ถ้าแก้ไขได้แล้วจะกลับมาสรุปผลอีกครั้ง

Blog Tags