2012年12月11日 星期二

How to Enable Metadata Column for List in SharePoint 2010 (如何在SharePoint 2010的清單中中啟用Metadata欄位)

在使用SharePoint 2010的時候,通常只要啟用Metadata Service服務,就可以在網站的清單中加入Metadata欄位,但亞當斯今天遇到一個SPS環境預設是不允許清單加入Metadata欄位的,重點是警示訊息告知:沒有啟用Feature,因此無法加入此類型的欄位,如下圖所示:

column

但是我在網站和網站集合的網站功能清單中,都並沒有找到可以啟用此Feature的功能,後來查了一下文件,發現原來這個Feature預設是隱藏的,如果要啟用它的話,可能要使用Server OM API或是下PowerShell。

以下是PowerShell語法:

Enable-SPFeature -id "73EF14B1-13A9-416b-A9B5-ECECA2B0604C" -Url <Site-URL>

為了知道這個Feature的名字,我特別寫了一個WinForm去列出網站中所有的Feature有哪些? 程式碼如下:
Feature

程式執行後的結果如下,原來此Feature名為:TaxonomyFieldAdded
metadata

啟用後就可以使用Metadata Column了!

metadtacolumn

2012年12月8日 星期六

使用Visual Studio 2010 Windows Azure SDK 部署ASP.NET至Windows Azure

 

1.先安裝Web Platform Installer 3.0,Web Platform Installer (WebPI) 針對所有的 Microsoft 免費網路產品提供簡化的下載/安裝體驗,以下為中文版的下載網址:

http://www.microsoft.com/downloads/details.aspx?familyid=32B0DFE5-F139-4E1C-B412-3DA39F50BBF9&displaylang=zh-tw

image

2.下載並安裝 Windows Azure SDK 1.4 is available for download (下載網址Here)

Windows Azure SDK 1.4 Refresh 主要是解決以下問題的一個穩定版本。

  • 解決 web.config 檔案設為唯獨時會造成整體 IIS 失敗的問題。
  • 解決封裝時會造成整體 IIS 封裝大小增加一倍的問題。
  • 解決診斷存放區滿溢時會造成整體 IIS Web 角色回收的問題。
  • 解決會造成診斷無法將 IIS 記錄傳輸到 Windows Azure 儲存體的 IIS 記錄檔權限問題。
  • 解決 csupload 無法在 x86 平台上執行的問題。
  • 現在更容易診斷 web.config 中的使用者錯誤。
  • 增強產品功能,提高 Windows Azure 角色的遠端桌面穩定性和可靠性。

image

安裝的過程中會檢查其本機系統上的必要條件,若是沒有滿足的必要條件,則會要求自動幫你安裝,按下確定之後開始安裝所有必要條件。

image

終於看到成功的畫面,小小給他感動一下。

image

3.接下來要將ASP.NET網站部署到指定的雲端伺服器,那麼必須先建立「Windows Azure Project」專案類型的網站。

image

4.網站專案設計完成,部署時專案—>右鍵—>選擇「發行」。

image

5.在第一次針對Windows Azure Project發行網站時,必須先設定 Remote Desktop 所需的主機管理員帳號憑證,否則Web Deploy for all Roles 這個功能就無法啟用,請參考下圖,預設會是灰色無法勾選。

image

6.

image

image

image

 

image

 

image

 

image

 

image

image

image

image

 

image

 

image

 

image

2012年12月7日 星期五

How to use HTML Offline Application Cache(HTML5中的離線應用程式快取)

一般來說,在開發手機或是行動裝置的應用程式大部份都會遇到離線的問題,假設不想要在離線時出現錯誤的UI畫面,那麼可以使用HTML5 Offline Application Cache機制來解決此問題,剛好之前上了星星老師的課,稍微做了一下筆記,設計方式如下:

1.先準備一份HTML,用來呈現一張圖片,HTML TAG如下:

image

瀏覽HTML看起來如下:

image

模擬一下網路通訊離線,把網路通訊先斷線,則預設瀏覽起來的畫面如下:

image

2.接著新增一個用來快取網頁離線資料和內容的manifest定義檔,這邊命名為:offline.manifest,第一行一定要撰寫:CACHE MANIFEST,且前面不可以有空白或是將此行放在第二行,如果這樣的話CACHE將會失效,然後想要快取的內容放在CACHE:這行之下,範例manifest內容如下:

image

3.將離線快取的manifest定義檔引用至網頁中,作法為在html標籤中加入manifest屬性,設定如下:<html manifest="offline.manifest">

image

4.因為亞當斯是使用Visual Srudio 2010開發ASP.NET測試功能,所以先把此網頁執行起來,接著把Web 開發伺服器停止,用來模擬連線

image

5.最後,重新refresh一下網頁,可以看到圖片和網頁已經被CACHE快取了,大功告成,這功能真是太強大了,將來運用在手機的網頁上是非常好用的功能!

image

JavaScript navigator.onLine連線或離線偵測模式

JavaScript 的navigator.onLine屬性是一個唯讀的布林值,主要的功能目的為判斷系統是否處於連線或是離線模式,假設運用在手機的網頁上就可以進行判斷手機目前的狀況是否可以進行網路通訊,以達到不同狀態時的處理情況。

以下是簡易的設計方式以及執行結果,操作步驟如下:

1. 先準備HTML,有一個span和一個button,如下內容:

<span id="status" class="offline">Unknow</span>
<button id="check">  Check Connection </button>

並準備css來用呈現UI,有Online和Offline兩個畫面,分別呈現字型綠色和紅色:

image

2.撰寫JavaScript先判斷瀏覽器的onLine屬性定義是否瀏覽器有支援,使用typeof(navigator.onLine) != "undefined" 去判斷字串是否相同會比較保險一點,程式也比較不容易出錯:

image

3.在按鈕上註冊click事件後,進行判斷,此時使用navigator.onLine進行判斷瀏覽器是否連線或是離線:

image

4.開啟瀏覽器執行:

image

但是以上的程式碼必須每一次都手動去按下按鈕才能知道是否連線,那麼是否有辦法可以隨時讓網頁自動去判斷目前系統是否連線呢?答案是可以的,做法就是在init事件中,先進行註冊online和offline事件,並搭配checkHandler() 檢核函式,就可以在往後系統通訊網路連線或離線時,自動去觸發並進行UI的更新,程式碼修改如下:

image

2012年11月30日 星期五

有關 Hex 的編碼對應

defined by IBM
hex 01 = Escape key
hex 02 = 1 or ! key
hex 03 = 2 or @ key
hex 04 = 3 or # key
hex 05 = 4 or $ key
hex 06 = 5 or % key
hex 07 = 6 or ^ key
hex 08 = 7 or & key
hex 09 = 8 or * key
hex 0A = 9 or ( key
hex 0B = 0 or ) key
hex 0C = - or _ key
hex 0D = = or + key
hex 0E = Backspace key
hex 0F = Tab key
hex 10 = q or Q key
hex 11 = w or W key
hex 12 = e or E key
hex 13 = r or R key
hex 14 = t or T key
hex 15 = y or Y key
hex 16 = u or U key
hex 17 = i or I key
hex 18 = o or O key
hex 19 = p or P key
hex 1A = [ or { key
hex 1B = ] or } key
hex 1C = Enter key
hex 1D = Control key (Left if two)
hex 1E = a or A key
hex 1F = s or S key
hex 20 = d or D key
hex 21 = f or F key
hex 22 = g or G key
hex 23 = h or H key
hex 24 = j or J key
hex 25 = k or K key
hex 26 = l or L key
hex 27 = ; or : key
hex 28 = ' or " key
hex 29 = ` or ~ key
hex 2A = Left shift key
hex 2B = \ or | key
hex 2C = z or Z key
hex 2D = x or X key
hex 2E = c or C key
hex 2F = v or V key
hex 30 = b or B key
hex 31 = n or N key
hex 32 = m or M key
hex 33 = , or < key
hex 34 = . or > key
hex 35 = / or ? key
hex 36 = Right shift key
hex 37 = * or PrtScr key
hex 38 = Alt key (Left one if two)
hex 39 = Space bar
hex 3A = Caps Lock key
hex 3B = F1 key
hex 3C = F2 key
hex 3D = F3 key
hex 3E = F4 key
hex 3F = F5 key
hex 40 = F6 key
hex 41 = F7 key
hex 42 = F8 key
hex 43 = F9 key
hex 44 = F10 key
hex 45 = Num Lock key on numeric keypad
hex 46 = Scroll Lock key on numeric keypad
hex 47 = 7 or Home key on numeric keypad
hex 48 = 8 or Cursor Up key on numeric keypad
hex 49 = 9 or Pg Up key on numeric keypad
hex 4A = - key on numeric keypad
hex 4B = 4 or Cursor Left key on numeric keypad
hex 4C = 5 key on numeric keypad
hex 4D = 6 or Cursor Right key on numeric keypad
hex 4E = + key on numeric keypad
hex 4F = 1 or End key on numeric keypad
hex 50 = 2 or Cursor Down kay on numeric keypad
hex 51 = 3 or Pg Dn key on numeric keypad
hex 52 = 0 or Insert key on numeric keypad
hex 53 = . or Delete key on numeric keypad
hex 54 = Sys Req key (on 84-key keyboard)
hex 57 = F11
hex 58 = F12
hex E1 = Pause key (on 101-key keyboard)
The following scan codes are preceeded by hex E0...

hex 1C = Enter key on numeric keypad
hex 1D = Control (Right if two)
hex 35 = / key on numeric keypad
hex 38 = Alt (Right if two)
hex 47 = Home
hex 48 = Up arrow
hex 49 = Pg Up
hex 4B = Left arrow
hex 4D = Right arrow
hex 4F = End
hex 50 = Down arrow
hex 51 = Pg Dn
hex 52 = Insert
hex 53 = Delete

2012年11月24日 星期六

FREE ebook for SharePoint 2013 (微軟免費 SharePoint 2013 電子書)

想了解SharePoint 2013的人有福了,目前微軟官方網站上提供了幾本免費的電子書,是針對SharePoint 2103 和Office 2013 等所涵蓋的內容,沒事K一K,增長見識,有事K一K,強化知識。

其中亞當斯比較喜歡的幾本分別是:

  • Explore SharePoint 2013
    主要介紹SharePoint 2013的新功能和一些操作方式
    下在網址:http://www.microsoft.com/en-us/download/details.aspx?id=35396
  • Deployment guide for SharePoint 2013
    This book provides deployment instructions for SharePoint 2013. The audiences for this book include application specialists, line-of-business application specialists, and IT administrators who are ready to deploy SharePoint 2013.
    下載網址:http://www.microsoft.com/en-us/download/details.aspx?id=30384
  • Deployment guide for Office 2013
    This book supports a preliminary release of Microsoft Office 2013 and provides deployment instructions for Office 2013. The audiences for this book include application specialists, line-of-business application specialists, and IT administrators who are ready to deploy Office 2013.
    下載網址:http://www.microsoft.com/en-us/download/details.aspx?id=30388
  • Deployment guide for Duet Enterprise 2.0 for Microsoft SharePoint and SAP Server 2.0
    This book provides deployment instructions for Duet Enterprise for Microsoft SharePoint and SAP Server 2.0. The audiences for this book include application specialists, line-of-business application specialists, and IT administrators who are ready to deploy Duet Enterprise 2.0.
    下載網址:http://www.microsoft.com/en-us/download/details.aspx?id=30381

以上提供給有興趣研究SharePoint 2013的朋友們一些參考資訊,希望對大家有所幫助!

2012年11月17日 星期六

SharePoint 2013 Project Templates for Visual Studio 2012-2(在Visual Studio 2012中消失的SharePoint 2013專案範本)

在前一篇SharePoint 2013 Project Templates for Visual Studio 2012-1(在Visual Studio 2012中消失的SharePoint 2013專案範本)介紹到安裝好開發SharePoint 2013的專案樣板,接下來我們來比較一下跟之前SharePoint 2010的開發方式有何不同。

重新開啟Visual Studio 2012 可以看到Office和SharePoint開發的專案範本都被整合在一個Office/SharePoint分類中,並且多很多額外的樣板,有應用程式、Office Add-ins和SharePoint方案三種小分類。

image20

其中,Visual Studio 2012中開發SharePoint 2013和Visual Studio 2010開發SharePoint 2010最大的不同在於SharePoint 2013大部分是以APP的方式開發,所以假設要開發App的話,則建立:應用程式/ShaePoint 2013 相關應用程式專案。
image34

ShaePoint 2013 相關應用程式專案好處就是可以在您的個人NB或是PC環境上直接開發和建置,都不會有問題,就算你的電腦沒有安裝SharePoint 2013也可以!這點對大部分的SPS2013 APP開發者來說無異是一大福音,因為畢竟以往考量最麻煩的還是開發環境的建置!

image28

但是,假設要開發的專案類型為SharePoint方案,如下圖所示:

image46

那麼很抱歉,VS2012不客氣的就丟出一個錯誤視窗,說明:此系統未安裝 SharePoint Foundation 2013 或 SharePoint Server 2013 的必要版本。若要開發 SharePoint 方案或瀏覽伺服器總管中的 SharePoint 連線,本機系統上必須安裝 SharePoint。請確定 SharePoint 專案所參考的本機伺服器已存在。

image51

所以要開發SharePoint方案這種專案樣板的大大們,還是要在你的開發環境上安裝 SharePoint Foundation 2013 或 SharePoint Server 2013 阿,但至少ShaePoint 2013 App的開發方式會是此版本的趨勢,所以開發環境的建制就看各位大大的考量啦!

2012年11月16日 星期五

SharePoint 2013 Project Templates for Visual Studio 2012-1(在Visual Studio 2012中消失的SharePoint 2013專案範本)

要開發SharePoint 2013 ,光只裝Visual Studio 2012還是不夠的,因為如果只是單純的安裝Visual Studio 2012的話,只會有以下幾個SharePoint 2013基本的專案範本可以使用,跟前一個版本Visual Studio 2010差太多了!

image

此時則可以先至以下網址:http://msdn.microsoft.com/en-us/office/apps/fp123627  另行下載安裝Microsoft Office Developer Tools for Visual Studio 2012

image

安裝過程會透過Web Platform Installer 4.0 安裝,目前最新版本是Microsoft Office Developer Tools for Visual Studio 2012-Preview 2,注意一下發行日期為:2012/10/19

image

準備安裝的過程中相關的必要元件很多,並不僅僅只是要安裝Microsoft Office Developer Tools for Visual Studio 2012而已,相關聯的WIF或是WF都是必要對應安裝的元件,確定沒問題直接安裝即可。

image

當然最後可以看到以下安裝完成的畫面,就代表安裝完成,可以仔細看一下安裝的內容,真的不少!

image

2012年11月14日 星期三

The Solution of using ASP.NET Create Excel in Windows 2008 x64 with 80070005(在x64位元的系統上執行ASP.NET產生Excel遇到80070005 存取被拒解決方式)

環境:Windows 2008 R2 x64 + ASP.NET 4.0 + Excel 2010

問題:當在ASP.NET中使用Microsoft.Office.Interop.Excel之ApplicationClass來讀取Server上的Excel時,預設會出現以下的錯誤訊息:
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 存取被拒.

我使用try…catch包起來所攔截的Exption如下所示:

image

造成以上問題主要是執行DCOM的權限部分,因為ASP.NET4.0以上版本在IIS上執行所使用ApplicationPool中的執行身分是ApplicationPoolIdentity,也就是IIS AppPool\ASP.NET v4.0

image

因此第一個要解決的就是在DCOM中給此帳號足夠的存取權限,作法如下:

  1. 在SERVER上先執行以下指令:mmc comexp.msc /32,此指令主要是開啟32位元的元件服務設定。
  2. 在元件服務—>電腦—>我的電腦—>DCOM設定中找到Microsoft Excel Application,按右鍵選擇內容
    image
  3. 點選安全性頁籤,啟動和啟用權限以及存取權限預設都沒有設定給ASP.NET v4.0
    image
  4. 所以我們要進行自訂設定
    image
  5. 在啟動和啟用權限以及存取權限中將IIS AppPool\ASP.NET v4.0加入
    image
  6. 當按下檢查名稱後,會自動尋找對應,按下確定
    image
  7. ASP.NET v4.0權限為允許本機啟動以及本機啟用
    另外假設往後也會使用到NETWORK SERVICE帳號的話,也可以順道加入,避免往後其他ApplicationPool設定NETWORK SERVICE時,還要近來在設定一次
    imageimage

到目前為主解決了DCOM權限的問題,但是EXCEL麻煩的問題不單單是這樣,當執行程式時,權限是通過了,但出現了另一個錯誤畫面,如下圖所示:

image

其實到這邊亞當斯已經很想砸桌子了,因為以上所列的幾種可能原因根本都不存在,當然我很確定我的程式是沒問題的,那麼到底怎麼辦呢? 問了一下Google大神,很多人都使用修改註冊機碼的方式,終於被我找到一種最快、最簡單的解決方式,那就是:

  1. 如果是Windows 2008 Server x64 的話,那麼就在下列路徑中C:\Windows\SysWOW64\config\systemprofile新增一個資料夾,名稱命名為:Desktop,即可。
    image
    資料建立完成之後,還要進行權限設定,如下圖所示:
    image
  2. 假設Windows 2008 Server x86的話,路徑為 C:\Windows\System32\config\systemprofile\Desktop

老實說,我也不知道第二個問題的發生主要原因所在,或許是跟產品的一些限制有關,總之,以上兩個大問題都解決之後,就可以順利在ASP.NET中執行存取EXCEL了,YES。