次の方法で共有


新しいセルフサービス ポータルの展開シナリオとトラブルシューティング

 

発行: 2016年3月

適用対象: System Center 2012 R2 Service Manager

新しいセルフサービス ポータルは、ASP.NET MVC Razor ベースの HTML5 Web アプリです。 インストール中、Web アプリは、Service Manager サーバー ブラウザーで実行されている SDK サービスに直接接続するように構成されます。 新しく構成された基本的なセルフサービス ポータルの設定は、次の図に示すように動作します。

sm-ssp-scenario-01

コンポーネント間のデータ フローのシーケンスを次に示します。

  1. ユーザーが Web アプリの URL をブラウザーに入力して、セルフサービス ポータルにアクセスします。

  2. ASP.NET がユーザーに対して新しいインスタンスを作成し、インストール中の場合は、ユーザーのコンテキストで SDK サービスへの接続を試みます。

  3. SDK サービスは、Service Manager データベースのデータの読み取り、書き込みを行います。

System_CAPS_ICON_important.jpg 重要


以前の SharePoint ポータルと同じサーバーに新しいポータルをインストールする場合: このセルフサービス ポータルのリリースは、System Center Service Manager 2010、System Center Service Manager 2010 Service Pack 1 (SP1)、または Service Manager 2012 R2 の以前のセルフサービス ポータルと互換性がありません。また、これらのバージョンからアップグレードすることもできません。 新しいセルフサービス ポータルを System Center 2012 - Service Manager に展開するには、以前のバージョンのセルフサービス ポータルをアンインストールしておく必要があります。

展開の準備

展開の準備を行うには、次のセクションを確認してください。

ハードウェア要件

System Center 2012 R2 サーバー プロセッサ (最小値) プロセッサ (推奨値) RAM (最小値) RAM (推奨値) ハード ドライブの領域 (最小値) ハード ドライブの領域 (推奨値)
セルフサービス ポータル + セカンダリ Service Manager (推奨*) 8 コア 2.66 GHz CPU 8 コア 2.66 GHz CPU 16 GB 32 GB 80 GB 80 GB
セルフサービス ポータル (スタンドアロン) 4 コア 2.66 GHz CPU 8 コア 2.66 GHz CPU 8 GB 16 GB 80 GB 80 GB

*上記の要件は、許容される応答時間内 (平均読み取り操作 3 秒未満、書き込み操作 5 秒未満で、読み取り/書き込み比率は 80:20) で 500 人のユーザーへの同時アクセスを提供します。 さらに大規模な展開については、次の「Web ファームの展開」セクションを参照してください。

ソフトウェア要件

Windows Server 2012 R2

サポートされている Web ブラウザー

セルフサービス ポータルには、1024 x 768 を上回る画面解像度が必要です。 これは次のブラウザーでサポートされています。

  • Microsoft Edge

  • Microsoft Internet Explorer 10 および 11

  • Mozilla Firefox 42 以降

  • Google Chrome 46 以降

新しいセルフサービス ポータルの展開

新しいセルフサービス ポータルの展開方法の詳細な手順については、「新しいセルフサービス ポータルの展開」を参照してください。 次のセクションでは、展開に関する重要な考慮事項について概説します。

ポータルを既定の Web サイトとしてインストールする

新しいセルフサービス ポータルをポート 80 でインストールする場合は、IIS の既定の Web サイトを別のポート (ポート 8080 など) に移動してから、セルフサービス ポータルをポート 80 に移動する必要があります。

SSL を使用する

特に基本認証でユーザー名とパスワードがプレーンテキストでネットワーク経由で転送される場合は、SSL を使用して、セキュリティで保護された通信を確保することをお勧めします。

展開トポロジ

セルフサービス ポータルには、次の展開トポロジを使用できます。

1 台のサーバー (推奨) - 同じサーバーにセルフサービス ポータルと Service Manager サーバーを配置

このトポロジでは、新しいセルフサービス ポータルと管理サーバー ロールの両方が同じサーバーにインストールされています。 ポータルと SDK サービスの間のネットワーク遅延が発生しないため、これは推奨トポロジです。 また、プライマリ サーバーで実行されているワークフローが原因でパフォーマンスが低下しないように、セルフサービス ポータルは、セカンダリ サービス管理サーバーにインストールすることをお勧めします。

sm-ssp-scenario-02

このトポロジでは、Windows 認証 (既定で構成済み) を使って、SSL 使用のオーバーヘッドなしでセキュリティで保護された認証を提供します。

スタンドアロンのセルフサービス ポータルの展開

このトポロジでは、セルフサービス ポータルは、Service Manager 管理サーバー ロールがインストールされていないサーバーにインストールされています。

sm-ssp-scenario-03

この構成では、新しいセルフサービス ポータルとセカンダリ Service Manager サーバーが別々のサーバーにインストールされ、Web アプリから SDK サービスへの接続を確立するにはダブルホップが必要です。 ここでは Windows 認証を使用できません。ポータルは、基本認証を使用するように構成する必要があります。 基本認証は本質的に安全性が低いため、SSL を使用して、ファイアウォールやプロキシ サーバーを越えたリソースへのアクセスなどのセキュリティの問題を回避することをお勧めします。

SSL を使用すると、ポータルと SDK サービスの間にネットワーク遅延が発生します。したがって、この構成は、1 台のサーバーの展開トポロジに比べると低速ですが、 ダブルホップを回避できない展開シナリオで役に立ちます。

Web ファームの展開

新しいセルフサービス ポータルの重要なメリットの 1 つが、Web アプリにローカル データ ストレージがない点です (キャッシュを除く)。 このサービスでは、Service Manager データベースで読み取りと書き込みを直接行います。 これにより、Web サーバーの複数のインスタンスを簡単に同時展開できます。 1,000 人を超えるユーザーがポータルに同時アクセスする大規模な展開では、新しいセルフサービス ポータルを、次のような構成で Web ファームとして展開できます。

sm-ssp-scenario-04

Web ファームでは、セルフサービス ポータルに対する高可用性が実現します。 内部的には、Web アプリによって SDK サービスへの WCF 接続が確立されます。 最初の接続を確立するには時間がかかります。したがって、ユーザーが最初に接続する Web サーバーは、迅速な応答を得るために、後続の要求すべてに対してサービスを提供することをお勧めします。 IIS でこのように構成するには、ARR 設定でクライアント アフィニティを有効にする必要があります。

セットアップに関する問題のトラブルシューティング

次のトラブルシューティング セクションは、一般的な問題を解決するのに役立ちます。

以前のポータルをアンインストールした後に新しいセルフサービス ポータルをインストールできない

インストールを機能させるには、以前のインストールのレジストリをクリーンアップする必要があります。 次の手順を使用してください。

  1. レジストリ エディターを開き、SMPortalWebContentServer キーを検索して、見つかったすべてのインスタンスを削除します。 ポータルのみが見つかった場合は、親プロパティも削除できます。

  2. HEKY_LOCAL_MACHINE\SOFTWARE\Microsoft\System Center\2010\Service Manager\Setup に移動して、次のプロパティを削除します。

    • PortalWebSiteName

    • PortalWebSitePort

    • SMServerName

  3. ポータル Web サイトのインストール ディレクトリ <InstallationDrive>:\inetpub\wwwroot\SelfServicePortal を手動で削除します。

IIS がインストールされていない

サーバーで IIS が有効になっていても、[構成] ページには、IIS の役割エラーが表示されます。

sm-ssp-scenario-05

これは、管理者の資格情報を使用せずにインストーラーを起動したときに発生します。 この場合、インストーラーは IIS 構成設定にアクセスできません。

解決方法: SetupWizard.exe を管理者として実行します。 SetupWizard.exe を右クリックし、[管理者として実行] を選択できます。

新しいセルフサービス ポータルのトラブルシューティング

このセクションでは、新しいセルフサービス ポータルをインストールした後に発生する可能性がある問題のトラブルシューティング方法について説明します。

IIS 設定

次のポータルの既定の設定は、インストール時に構成されます。

アプリケーション プール

.NET CLR バージョン 4 がクラシック モードで実行されるように構成されます。

sm-ssp-scenario-06

詳細設定では、アプリケーション プールは、インストール時に指定されるサービス アカウントで実行されるように構成されます。 そのユーザーには、Service Manager と、それが実行されるローカル コンピューターにおける管理者特権が必要です。

sm-ssp-scenario-07

Web サイトの構成

偽装Windows 認証のみを有効にする必要があります。 他の設定はすべて無効にします。

sm-ssp-scenario-08

偽装については、[認証されたユーザー] を選択します。

sm-ssp-scenario-09

Windows 認証の設定:

sm-ssp-scenario-10

Web サイトの既定のドキュメントは index.cshtml にします。

sm-ssp-scenario-11

基本認証

ダブルホップ シナリオでは、Windows 認証は機能しないため無効にします。 代わりに基本認証を有効にして、構成する必要があります。

sm-ssp-scenario-12

トレースの有効化

次の手順を使用して、トレースを有効にします。

手順 1. web.config ファイルに次の設定を追加して、イベント ログの生成を有効にします。

<system.web>  
   …..  
   <trace enabled="true"/>  
   …  
</system.web>  
  

手順 2. web.config ファイルに次のセクションを追加して、ファイルに出力を転送します。

<system.diagnostics>  
    <trace autoflush="true">  
      <listeners>  
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\logs\SSPOutput.log" />    
      </listeners>  
    </trace>  
</system.diagnostics>  
  

Web アプリは、ログオン ユーザーのコンテンツ中で実行されるので、ログ フォルダー内のすべてのユーザーに対して書き込みアクセス許可を必ず提供してください。 たとえば、上の例の中の c:\logs です。

IIS のデバッグ

IIS では、IIS の問題をデバッグするための効率的なログ機能がサポートされています。 詳細については、「IIS Logging Overview」を参照してください。

展開に関する問題のトラブルシューティング

次のセクションを使用して、ユーザーに影響する可能性がある展開に関する問題のトラブルシューティングを行います。

定義の変更 (お知らせ/要求内容/サービス内容/ナレッジ記事) が表示されない

新しいセルフサービス ポータルでは、高速な応答時間を実現するために、キャッシュ メカニズムを使用して静的なデータが格納されます。 キャッシュ タイムアウトは、既定では 30 分に設定されていますが、この時間は変更できます。 詳細については、「新しいセルフ サービス ポータルの展開」の基本的なカスタマイズに関するセクションを参照してください。 お知らせ、要求内容、サービス内容、およびナレッジ記事の定義への変更は、キャッシュがクリアされるまで表示されません。

メモリ キャッシュは .NET Framework の MemoryCache に基づいて使用されます。 キャッシュされたコンテンツは、IIS ワーカー プロセスが終了するまでメモリに残ります。 IIS を再起動しても問題は解決しません。IIS では以前のプロセスが削除されず、新しいプロセスが開始されないためです。 代わりに IIS は、既存のプロセスを再利用します。 読み取りを強制的に更新し、キャッシュ データを削除するには、インスタンスに関連付けられている IIS ワーカー プロセスを特定し、IIS を再起動する前に [タスクの終了] を選択します。

IIS ワーカー プロセス

[個人の要求] および [個人の活動] セクションが空である

新しい型プロジェクションは、インストーラーの一部である Portal.mpb ファイルに含まれており、Service Manager にインポートする必要があります。 インポートするには、次の手順を使用します。

  1. 管理サーバー上に Portal.mpb ファイルをインポートします。

  2. ポータルが接続されている管理サーバーで、SDK サービスを再起動します。

外部リンクをブロックするポップアップが表示される

Internet Explorer の [セキュリティ強化の構成] 設定が有効になっている場合、ポータルの参照中に、各ページで次のポップアップが表示されます。

Internet Explorer のポップアップ

上記のポップアップは、Insights JavaScript SDK に対して表示されます。この SDK は、製品利用統計情報を収集するためにセルフサービス ポータルに統合されています。 製品利用統計情報データの送信を無効にするには、EnableTelemetry 構成パラメーターの値を変更します。これにより、ポップアップが表示されなくなります。 詳細については、「新しいセルフ サービス ポータルの展開」の基本的なカスタマイズに関するセクションを参照してください。

ポータルに、IIS をホストしているコンピューター上でアクセスできますが、リモート コンピューターからはアクセスできません

この問題は、ポータルと SDK サービスが別のコンピューター上にある場合に発生する可能性があります (スタンドアロン セルフ サービス ポータルの展開)。 これは、リモート コンピューターからポータルにアクセスしようとする際に、ダブル ホップ シナリオの原因になります。 そのため、「Windows 認証」の下に説明されている既定のポータル構成は機能しません。 この問題を解決するには、代わりに「基本的な認証」の構成を使用します。

サービス内容の一部も、ポータル上で公開されたサービス内容も表示されません

これは、次の条件の 1 つを満たしている場合にのみ、サービス内容が表示されるために起こります。

  • サービス内容が、ブラウザーの言語、またはポータル言語セレクター一致で選択された言語と一致する。

  • サービス内容で、言語が選択されていない。

762cd06f-cd61-49ad-a757-8c7d45330125 の画像 2

762cd06f-cd61-49ad-a757-8c7d45330125 の画像 1

下記は、ポータルによってサポートされている言語と言語コードの一覧です。

  • en-US : 英語( 米国)

  • fr-FR : フランス語

  • de-DE : ドイツ語

  • CS-CZ: チェコ語

  • da-DK : デンマーク語

  • el-GR : ギリシャ語

  • es-ES : スペイン語

  • fi-FI : フィンランド語

  • hu-HU : ハンガリー語

  • it-IT : イタリア語

  • ja-JP : 日本語

  • KO-KR : 韓国・朝鮮語

  • nb-NO : ノルウェー語

  • nl-NL : オランダ語

  • PL-PL : ポーランド語

  • pt-BR : ポルトガル語 (ブラジル)

  • pt-PT : ポルトガル語 (ポルトガル)

  • ru-RU: ロシア語

  • sv-SE : スウェーデン語

  • tr-TR : トルコ語

  • zh-CHS : 簡体字中国語

  • zh-TW : 繁体字中国語

  • zh-HK : 中国語 (香港特別行政区)

アイテムの時刻表示が常に "AM" です (たとえば、11:00 P.M. のイベントの時刻表示が 11:00 A.M. として表示されます)

この問題を解決するには、次のファイルで「utc-date」タグを見つけ、DateTime.Parse(xyz).ToString("yyyy,M,d,h,m,s") を DateTime.Parse(xyzToString("yyyy,M,d,H,m,s") に置き換えます。

  • Views\KnowledgeBase\Article.cshtml

  • Views\MyActivities\ActivityDetails.cshtml

  • Views\MyRequests\RequestDetails.cshtml

  • Views\Shared\_Layout.cshtml

ポータル上で、特定の作業項目のステータスを「アクティブ」として表示したい

以下は、ステータスの列挙型「ServiceRequestStatusEnum.OnHold」および「IncidentStatusEnum.Active.Pending」をアクティブとして表示するためのサンプル コードです。

次のコードを Views\MyRequests\Index.cshtml に追加する必要があります。

  
@{  
    List<Dictionary<string, object>> sortList = ViewBag.RequestsList;  
  
    string idClicked = ViewBag.ClickeID;  
    var reqType = ViewBag.ReqType;  
    var criteria = ViewBag.Criteria;  
    string clicked_filter = ViewBag.ClickedFilter;  
  
    foreach (Dictionary<string, object> listitem in sortList)  
    {  
        if (listitem["Status"].ToString().Equals("ServiceRequestStatusEnum.OnHold") || listitem["Status"].ToString().Equals("IncidentStatusEnum.Active.Pending"))  
        {  
            listitem["RequestStatus"] = Resources.SelfServicePortalResources.Active;  
        }  
    }   
}  
  

次のコードを Views\MyRequests\RequestDetails.cshtml に追加する必要があります。

  
@{  
…………  
  
    if (changeStatusButtonText != null)  
    {  
        if (changeStatusButtonText.Equals("ActivateRequest"))  
        {  
            changeStatusButtonText = Resources.SelfServicePortalResources.ActivateRequest;  
            changeStatusCommentPlaceholder = Resources.SelfServicePortalResources.AddCommentToActivate;  
        }  
        else if (changeStatusButtonText.Equals("CancelRequest")) //Active  
        {  
            changeStatusButtonText = Resources.SelfServicePortalResources.CancelRequest;  
             changeStatusCommentPlaceholder = Resources.SelfServicePortalResources.AddCommentToCancel;  
        }  
    }  
  
    if (requestEntry["Status"].ToString().Equals("ServiceRequestStatusEnum.OnHold")  
        || requestEntry["Status"].ToString().Equals("IncidentStatusEnum.Active.Pending"))  
    {  
        requestEntry["RequestStatus"] = Resources.SelfServicePortalResources.Active;  
        changeStatusButtonText = Resources.SelfServicePortalResources.CancelRequest;  
        changeStatusCommentPlaceholder = Resources.SelfServicePortalResources.AddCommentToCancel;          
    }   
  
}