SharePoint2013+VisualStudio2013 配置手順 ‘IIS アプリケーション プールのリサイクル’ でエラー

SharePoint2013+VisualStudio2013(Deploy)配置手順 ‘IIS アプリケーション プールのリサイクル’ でエラーが出力される場合の対処方法

1.Visual Studio 2013で以下のメッセージが表示される。

sp2013apppool001

配置手順 ‘IIS アプリケーション プールのリサイクル’ でエラーが発生しました: ローカル SharePoint サーバーを使用できません。サーバーが実行されており、SharePoint ファームに接続されていることを確認してください。

2. また、SharePoint管理シェル(PowerShell)起動時に、以下のメッセージが表示される。

ローカルファームにアクセスできません。Feature DependencyIDが指定されたコマンドレットは登録されていません

対処方法

現在のログインユーザでデータベースに権限を追加する。

  1. SQL Serversaもしくは管理者権限のあるWindowsログインユーザにてSQL Server Manegement Studioにログインする。
  2. SQL ServerVisual Studio(もしくはPowerShell)を実行したいWindowsログインユーザを追加する。
    sp2013apppool002
  3. 追加したWindowsログインユーザに以下のサーバロールを追加する。
    dbcreator
    public
    securityadmin
    sysadmin
    sp2013apppool003
  4. SharePoint_Config 等のDatabaseにアクセスできるようになり、それによって表題のエラーも解消されます。
    sp2013apppool004

プロバイダー向けのホスト型のSharePoint2013SharePointアプリ登録方法

SharePoint2013とMicrosoft Azureを連携させたアプリを開発するにあたり、連携部分において嵌りやすいので、
SharePointアプリをサイトコンテンツに設定するまでの方法をまとめてみました。

手順

  1. サイトコレクションを作成
  2. 作成したサイトコレクションで新しいアプリの登録
  3. Microsoft Azureの設定
  4. VisualStudio2013 プロジェクトの設定
  5. WebのパッケージをMicrosoft Azureに配置
  6. SharePoint2013用アプリの発行

1.サイトコレクションを作成

SharePoint2013 /Office365(SP2013)でサイトコレクションを作成する。
の「Office365(SharePoint2013)の場合」の方法で作成します。

2.作成したサイトコレクションで新しいアプリの登録

SharePointアプリをVisualStudio2013上で起動したときはクライアントIdが固定ではないため、
固定のクライアントIDとクライアントシークレットを生成する必要がある。

https://(サイトコレクションのアドレス)/_layouts/15/AppRegNew.aspx
にアクセスすると次の画面が表示される。
sharepoint_appregnew

アプリの種類
Webサーバーで実行中のアプリ

クライアントID
「生成」ボタンを押下すると自動で値が入る

クライアントシークレット
「生成」ボタンを押下すると自動で値が入る

タイトル
登録するアプリケーションのタイトル

アプリドメイン
アプリを配置するドメイン(Webのパッケージを配置するドメイン)

リダイレクト先のURI
SharePointから呼び出すURI(Webのパッケージを配置している場所を指定。HTTPS必須)

「作成」ボタンを押下すると、正常に作成された場合は作成された情報が画面に表示される。
作成完了の画面は一度きりの表示で後で確認できないため、記載されている情報は必ずメモを取ること。

3.Microsoft Azureの設定

アプリ登録で生成したクライアントIDとクライアントシークレットの登録を行う。

sharepoint_azure_1

この画面からタブの「構成」を押下して「アプリケーション設定」項目までスクロールする。

sharepoint_azure_2

初期ではWEBSITE_NODE_DEFAULT_VERSIONだけ入っているので、
ClientIdと、ClientSecretの2行を追加し、
アプリの登録で作成したクライアントIDとクライアントシークレットをそれぞれ設定する。
設定後は画面下にある「保存」ボタンを押下し、Microsoft Azureに反映させる。

4.VisualStudio2013プロジェクトの設定

SharePoint側、Web側の設定をそれぞれ行う。

AppManifest.xml

<Properties>
  <Title>TITLE</Title>
  <StartPage>https://localhost:44302/?{StandardTokens}</StartPage>
</Properties>
<AppPrincipal>
  <RemoteWebApplication ClientId="*" />
</AppPrincipal>
StartPageの「https://localhost:44302/」をアプリ登録で指定したリダイレクト先URIに変更する。
次にClientIdにアプリの登録で作成したクライアントIDを登録する。

 Web.config

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="ClientId" value="********-****-****-****-************" />
    <add key="ClientSecret" value="********+**********/********************+**=" />
</appSettings>

ClientIdと、ClientSecretの欄に
アプリの登録で作成したクライアントIDとクライアントシークレットをそれぞれ設定する。

 

5.WebのパッケージをMicrosoft Azureに配置

sharepoint_azure_3

VisualStudio2013のソリューションエクスプローラWebアイコンを右クリックし、
ポップアップメニューから「発行」を選んだ後 配置先を適切に指定し、画面右下にある「発行」ボタンを押下する。

6.SharePoint2013用アプリの発行

sharepoint_regist_3

VisualStudio 2013のソリューションエクスプローラのSharePointアイコンをクリックし、
プロパティのWebプロジェクトを「なし」に設定する。

sharepoint_regist_1

VisualStudio2013のソリューションエクスプローラのSharePointアイコンを右クリックし、ポップアップメニューから「発行」を選んだ後
「アプリをパッケージ化する」ボタンを押下する。押下すると生成先のフォルダが表示される。

sharepoint_regist_2

生成された拡張子がappのファイルをSharePoint用アプリにアップロードを行う。
正常に登録されるとアプリがサイトコンテンツに追加される。

sharepoint

追加されたアプリ(赤丸)をクリックし、リダイレクト先のURIへ遷移してエラーが出なければ完了。