カテゴリーアーカイブ: SharePoint

神秘的な SharePoint エラーのトラブルシューティング方法.

概要:

デバッグは、Windows SharePoint Services のカスタム機能を開発する場合は困難です。 3.0 (WSS) または Microsoft Office SharePoint サーバー (MOSS). 主な原因は、SharePoint 通常表面の診断情報が非常に少ない web ブラウザーでエラーが発生します。. このブログのエントリは、追加システムによって生成された診断情報その余分を提供することができますを検索する方法をについて説明します詳細その 1 つのビットが根本的な原因を特定するために必要. これは、問題の解決につながることができます。.

解決するために大きな成功を収めてこのテクニックを使用しているそれ以外の場合神秘的なエラー.

アプローチ:

SharePoint は、診断ログでログ ファイルに大量の情報を保存します 12 ハイブ.

"12 ハイブ" "C に通常位置:\プログラム \ 共通ファイル \ ファイルでサーバー Extensions12」. (それが可能かどうか分かりませんが 12 他にどこにハイブ, 実際).

アイデアは、現在のログ ファイルを特定するには, エラーを強制し、ログ ファイルをすばやく開く. これらのログ ファイルは、によって特徴付けられます。:

  • おびただしい量の情報. SharePoint は非常に大量の診断情報を生成し、非常に迅速にそのログ ファイルに書き込みます. それをキャプチャするための指を簡単にする必要があります。.
  • 多様性. SharePoint は単一のログ ファイルに書き込みませんが、むしろシーケンスに複数のログ ファイルが生成されます。.
  • コピーし、MS Excel にうまく貼り付ける.

私のお気に入りの方法:

  1. 指す windows エクスプ ローラーを開いて、 12 hivelogs.
  2. 変更日付を表示するビューを並べ替える (最も最近の最初).
  3. ほとんどの現在のログ ファイルを強調表示します。.
  4. Web ブラウザー ウィンドウで, 強制的にエラーが発生します.
  5. すぐに現在のログ ファイルを開き、MS Excel にその内容をコピー.
  6. 最後にジャンプし、関連するエントリを分析.

その他注意事項:

既定では, 診断ログにある、 12 hiveLOGS ディレクトリ.

MS のベスト プラクティス (マイク T に従って. マイクロソフトの) ログ ファイルを別のハード ドライブに保存される状態. 1 つは、サーバーの全体管理. システム管理者は、これを行う必要があります。, その場合が明らかに必要がある代わりに、デフォルトのログ ファイルを検索するには 12 ハイブの場所).

このエントリのような問題します。:

  • SharePoint ワークフローの内部エラーのため開始できませんでした。.
  • (もっと時間をかけて追加するには)
  • このエントリは役立ってワークフロー エラーを診断します。 (例えば. 「ワークフロー内部エラーのため開始できませんでした」).

MOSS: 組織への導入効果

(このエントリの間掲示される十字 http://paulgalvin.spaces.live.com/blog/http://blogs.conchango.com)

このサイトに掲載され、私自身、Conchango の位置を必ずしも, 戦略や意見.

概要:

このエントリは、大規模ないくつかの背景情報について説明します (3,000 ユーザー) Microsoft Office SharePoint Server (MOSS) MOSS の機能セットの完全な導入で終わる展開とプロジェクト、クライアントが満足しているように、しっかりと道を進めるに行った. エントリの執筆時点では, 私たちは約 50% プロジェクトの最初のフェーズを完了します。. 物事の進行, 私はこのエントリの更新および/または新しいエントリを書き込む.

この特定のケースで, 同社はすでに SharePoint Portal Server インストール 2003. IT グループは、"を見てみましょうかどうか誰も気のようなもので製品をインストール" ファッション. それは多くのビジネス ユーザーによってすぐに採用された、大企業で非常に人気になった. あなたが想像できるように, これは最高の展開戦略 (クライアントは、容易に是認します。) MOSS が現場に到着したとき、, クライアント解決「それをする権利" それらを支援する私たちを雇ったと.

我々 はこのプロジェクトの実装を始めたとき、私たちに直面している中央の質問の 1 つだった: このクライアントにコケを紹介を行うに我々? クライアントがすでに SharePoint との経験を持っていたことを考える, 我々 は疑問 — 私たちは"差分を行う必要があります。" 訓練か我々 を地面から開始? 主要なユーザーとの作業の後, 我々 これをより理にかなってグリーン フィールド プロジェクトとして扱うこと決定しました。.

その決定の出発点を与えたが、私たちはまだ企業にモスのロールアウトに良い戦略を考え出すの主要な要件が残って. モスはこのような大きな動物です。 … コンテンツ管理が含まれています, ドキュメント管理, 検索, セキュリティ, 対象ユーザーの設定, プロジェクト管理, 「すばらしい 40" テンプレート, ワークフロー, ビジネス データ コネクタ, など. 大規模な組織であるという事実とこれをカップルを ことができます。 本当に事実上あらゆる主要なコケを使用する機能をエンタープライズ リーチと起こっている多くの良いものを持つ偉大なプロジェクトの素質を持っています。.

我々 は再び時間と時間この問題に直面しています。 … コケは、エンタープライズ、エンタープライズ機能セットを持つに達する, まだ多少洗練されたクライアント苦労する精神的それらの特徴を吸収, 単独でそれらのかなりの割合は、彼らの毎日のルーチンに組み込むことができます。.

問題の魔法の解決策を持っていません。. 私は代わりに我々 が撮影した非常に最初のステップだけを対処と長期的な導入を成功させるパスをそれらをリードするクライアント.

スコープ:

クラフトのようなマイルス トーン「PoepleSoft 統合経由で BDC を完了」として含まれているプロジェクト計画にチームを望むほど, 「新しいクロス部門製品起動ワークフロー完了" 「経営管理 KPI を受け入れた」と, あまり何かを我慢していたわ. これはその"あまりを言うことは" 悪い. 実際, "少ない" 彼らがいた我々 が開始する前に先んじるマイルをだった初期のロールアウトしました. 我々 の場合に, "少ない" 変身:

  • ドキュメント ライブラリを使用して簡単なドキュメント管理, バージョン管理とコンテンツ タイプ.
  • 効果的な検索コンテンツ タイプに基づいており、事前の検索のカスタマイズ (マネージ プロパティを介して, かなりの結果を生成する XSLT, など).

上記の全社機能に加えて (彼らがすべての部門とユーザーにロールアウトされる意味), 我々 は次のシングルトン範囲でミニ-プロジェクトを追加:

  • BDC の統合のコンセプトの証明.
  • SPD を介して作成されたマルチ ステップと多分岐ワークフロー プロセス.
  • InfoPath フォームの複雑です.
  • いくつかのビジネス プロセスについて KPI を浮上 (我々 の場合おそらく人事人材の獲得, しかしそれは変わるかもしれない).

ここでのスコープはないです。 100% 正確が我々 のアプローチの代表でここに私の目的のため十分です, 私は、有効にする」であると考慮するものを説明するためであります。" 完全なコケ導入に黄金の道をしっかりとクライアントを設定する MOSS の導入.

このエントリでシングルトンについて多くを書くことはありません。. これらはアーチ戦略の一環であることを指摘したく. アイデアは、すべてのユーザーにコア ドキュメント管理および検索機能の実装はまだ高機能を提供するには, その他コアの MOSS 機能この初期段階で吸収するほとんどのユーザーの能力を超えているだけであるの高い表示され非常に代表的例. ただし, 彼らは「そこになります" 1 つ他のビジネス ユニットがの知っているまたはそれらについて学ぶし、自分自身のためこれらの機能をしたいと考えていると, 導入拡大につながる. これらのシングルトンのサクセス ストーリーも当社の販売チームは「弾薬を提供するためにサービスを提供します。" 正常に二番目に勝つため, 3 番目と n 相プロジェクト.

我々 が導入した、なぜ?

ベースラインの全社的な要件としてドキュメント管理および検索で定着しました。, 詳細情報の収集を開始する必要があります。. 実際問題として, このドキュメントとコンテンツの種類を理解するため最終的にマップされている理解を中心に展開.

視覚的な側近なしコンテンツ型を説明することは困難だとわかりました. CT のデータベース用語で説明するときより技術的な民俗がコンテンツ タイプについての議論から離れて歩くことができます。. 「CT は、データベース テーブルに似ています, 列が、列はデータ型に関して定義されます。, しかし、CT データ型はより単純な整数/日付も含める, しかしまた「選択" "ルックアップ" ように。" 我々 は"拡張について話すことができます。" コンテンツの種類, オブジェクト指向言語において基本クラスから機能を継承できるような多く. しかしこれは明らかにない技術的なバック グラウンドを持たない輸送の部門管理者の人のために有用. すなわち, ほぼ全員が MOSS ロールアウトで重要であります。.

ホワイト ボードを使用して、あやふやな. コンテンツ タイプと描かれた華麗なアイデアを紹介しました。 (またはそう彼らは) コンテンツの種類の写真、彼ら何か検索の面でおよび拡張する方法, など. 最後に, それはいくつかの電球をオンにしているような気, しかし、結果の画像のホワイト ボードは混乱.

これは私たちの現在、これまで最も効果的な着陸場所に私たちを率いてください。: サンド ボックスの MOSS サイトでこれらの機能を表示するように構成.

サンド ボックス サイトを使用します。, 示す:

  • コンテンツ タイプ:
    • 複数のデータ型と、CT の作成 (本文, 日付, 選択, ブール値, ルックアップ, など).
    • 親に基づく新しい CT を作成することにより、CT の拡張.
    • CT のメタデータを使用してドキュメントを検索.
  • ドキュメント ライブラリ:
    • 単一 CT をライブラリに関連付ける.
    • 我々 はそのライブラリにドキュメントをアップロードするときに何が起こるか?
    • 複数の CT をドキュメント ライブラリに関連付ける.
    • 我々 はそのライブラリにドキュメントをアップロードするときに何が起こるか?
    • フィルター処理およびドキュメント ライブラリ内の列見出しで並べ替え.
    • ドキュメント ライブラリのビュー:
      • 並べ替え
      • グループ化
      • "迅速なエントリ" (データ シート ビュー)
      • "タグの付いていないデータ" (他のコンテンツ ソースからモスへの移行を支援するには; これは、以下の詳細).

サンド ボックス サイト:

我々 のプロジェクトを完了した後の長いトレーニングの目的で使用する開発環境で永久的な特徴である私たちのサンド ボックスのサイトの設計し、説明されているように複数の成果物を含める:

コンテンツの種類:

次のコンテンツ タイプを定義しました: 請求書, 発注書, サービスの請求書.

彼らはの下でもっとまたはより少なく一般に請求書と注文書を選択しました
立っていたエンティティ. ビジネスで誰もが理解する支払督促を請求書には、 顧客 ため、 特定の発行 日付 いくつかに従って支払われる 支払条件. これは、ため、我々 は"請求書トレーニングと呼ばれる CT の自然の定義" (他の種類の請求書から区別するために). 購入順序は同様に簡単に定義します。. 「トレーニング サービス請求も作成しました" 「訓練の請求書に基づく新しい CT を作成することによって" CT とちょうど 1 列追加されます。, 「レンダリング サービス」.

上記の, 最初に抽象的な概念を説明しようとすると、動きが取れなくなってなし CT のいくつかの主要機能を今すぐを発揮できます。; 皆が既に我々 が"請求書の意味を理解します。" 「注文書と" 代わりにすることができます CT の力学に焦点を当てると自体.

カスタム リスト:

"ルックアップ型の列を持つ CT" カスタム リストまたはドキュメント ライブラリを指す. 広く、サンド ボックス、我々 はこれを使用します。, 我々 は顧客を含むカスタム リストを支えている 1 つを作成. それは簡単な概念を理解するため、我々 は顧客を選んだと実証する簡単. 請求書 CT 列があります。, "顧客" "ルックアップ型の定義されています。" このリストを指す.

我々 は"ベンダーを管理するために同様のカスタム リストを作成" "発注書の" CT.

ドキュメント ライブラリ:

我々 は 2 つのドキュメント ライブラリを作成: 「納品書」" 「混合ドキュメント」.

CT タイプ「請求書」のドキュメントのみを管理するために請求書ドキュメント ライブラリを構成しました.

"混合文書を構成しました" すべての 3 つの CT を管理するライブラリ.

並べ替えを示すいくつかのビューを作成します。, フィルタ リング, データ ・ シートとグループ化.

検索:

2 つの新しい管理プロパティを定義し、請求書番号や顧客にマップ.

新しいカスタマイズされたアドバンス検索サイトを作成し、"請求書を検索するユーザーを有効にするように修正" これら 2 つのマップされたプロパティを使用してください。.

XSLT の変更を請求書と顧客の数, 場合の提示, 明るい色の HTML テーブルで表示されます。. ここでの目的は、このような書式が可能なことを実証するには.

それをすべてまとめる:

我々 は、デモに参加する主要なユーザーの手配します。.

私たちはこの簡単なスクリプトに従う:

  1. 意味と、CT の目的について説明します。, 例として、請求書および購買注文を使用してください。.
  2. 同時に彼らが彼ら自身それらの画面を使用する必要はありませんそれらを確保しながら請求書 CT 定義を示してください, ただ、概念をピックアップします。.
  3. 請求書ドキュメント ライブラリに移動します。.
  4. ドキュメントをアップロードします。.
  5. ドロップ ダウン顧客はカスタム リストから供給本当に示す.
  6. 顧客の一覧に新しい顧客を追加し、新しく作成された顧客と最近アップロードされた請求書のメタ データを更新.
  7. "混合ドキュメントに切り替える" ライブラリとドキュメントのアップロード. どのようにシステムを求めるドキュメントの種類を説明します。.
  8. 並べ替え順序を変更する列名をクリックする方法請求書ドキュメント ライブラリおよびショーに戻って行く.
  9. 列レベルのフィルタ リングを示す.
  10. 複数レベルの並べ替えを示す異なるビューで表示します。, フィルターとグループ化.
  11. データ シート ビューを表示します。.
  12. "タグなし文書の目的について説明します。" ビュー.
  13. カスタマイズされた高度な検索を切り替える.
  14. 今では, 最近アップロードされたドキュメントがクロールし、インデックス作成されてする必要があります。, ので、マップされたプロパティを介してその請求書を検索する能力を示して、検索を実行します。.
  15. マップされたプロパティ対を介して検索の違いを示す. ちょうどテキストの検索.

この時点で, デモもっとまたはより少なく行われています. 約を取るらしい 30 宛先 45 分, どのように多くの質問によって人々 に尋ねる.

我々 は、「宿題」と自分のデスクに戻ってそれらを送信します。. シンプルな構成のこの excel スプレッドシート私たちは彼らが CT の観点から必要があると思う私たちを定義することを求める, 高レベルの両方 (ただの名称及び事業目的) 列とデータ型だけでなく、彼らは列の格納. 我々 はモス用語で列のデータ型を定義するそれらを聞かないでください。, ビジネス用語が.

要約すると:

その魅力は、全社的ないくつかコア MOSS の機能を示すため使用できるサンド ボックス環境を作成しました。.

我々 は簡単に理解し、一般的なビジネス エンティティをモデル化した、ユーザー モスに焦点を当てることができ、ないエンティティに取れなくなります。 / 自身の例.

ビジネス ユーザーは「宿題論文セッションから離れて歩く" 彼らは今、必要事項を記入して自分の最初のカットのコンテンツ タイプを設計するため使用する有能な excel ドキュメントの形式で.

最後に, 時間をかけてのデモを行う, クライアントのチーム メンバー自身より前進させるためにできるようになります。, デモ自身および一般に解放します私たちの残りの部分をより複雑な問題で動作するか, 世界分類学など, 複雑なワークフロー, BDC など.

MOSS: 機能例-カスタム データ型

ビジネス シナリオ:

製造会社のコケの企業全体に実装 30+ サイトと数十の企業の部門.

ビジネス目標:

ビジネス グループの多数にもかかわらず (部門, 場所, など), 特定のデータは、グローバル レベルで維持する必要があります。. たとえば, 会社のすべての物理的な場所の権限のマスター リスト (例えば. 製造設備, 倉庫の場所, 営業所) 中央に維持する必要があります。.

技術的な問題:

企業分類は複数のサイト コレクションを使用して実装されました. 我々 の物理的な場所の権限リストをカスタムの WSS リスト作成と思ってください。. [, 我々 はコンテンツ タイプの列を必要なとき (または、リストまたはドキュメント ライブラリに追加する列) 企業の場所が含まれています。, 「参照を使用して列を作成するか" データ型とこのマスター リストにポイント.

残念なことに, 参照データ型"ローカルのソース リストにアクセスする必要があります。" 権限の私達のリストがサイト コレクションにまたがることはできないことを意味.

技術ソリューション:

新しいカスタム データ型に基づいて SPField を実装し、マスターの WSS リストからそのリスト項目の設定 UI に DropDownList として表されます実装.

我々 と呼ばれる新しいサイト コレクションを作成 "http://localhost/EnterpriseData". そこ, 我々 は「企業の場所」という名前のカスタム リストを作成. このリストは標準的な"タイトルを使用してだけ" 企業の実際の場所のリストを格納するフィールド.

いずれかの手順をいくつか離散 WSS でカスタム データ型を作成するには. 彼らは:

  1. SPField から継承するクラスを定義します。 (必要な場合その他のフィールドから 1 つを継承可能性があります。).

ここでは、そのためのコード:

パブリック クラス XYZZYCorporateLocationField : SPFieldText
{
パブリック XYZZYCorporateLocationField
(SPFieldCollection フィールド, 文字列 typeName, 文字列 displayName)
: ベース(フィールド, typeName, displayName) { }

パブリック XYZZYCorporateLocationField
(SPFieldCollection フィールド, 文字列 displayName)
: ベース(フィールド, displayName) { }

パブリック オーバーライド BaseFieldControl FieldRenderingControl
{
取得
{
BaseFieldControl コントロール = 新機能 XYZZYCorporateLocationFieldControl();
コントロール。フィールド名 = この.InternalName;
戻り値 コントロール;
} //取得
} // fieldrenderingcontrol

パブリック オーバーライド 文字列 GetValidatedString(オブジェクト 値)
{
場合 (この.必須 || 値です。ToString().等しい(文字列.空))
{
スロー 新機能 SPFieldValidationException (「部門は割り当てられません。");
}
戻り値 ベース.GetValidatedString(値);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. 基本フィールド コントロールから継承する別のクラスを定義します。, ように:

パブリック クラス XYZZYCorporateLocationFieldControl : BaseFieldControl
{
保護 DropDownList XYZZYCorporateLocationSelector;

保護 オーバーライド 文字列 DefaultTemplateName
{
取得
{
戻り値 "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

パブリック オーバーライド オブジェクト
{
取得
{
EnsureChildControls();
戻り値 この.SelectedValue XYZZYCorporateLocationSelector。;
} // 取得
セット
{
EnsureChildControls();
この.XYZZYCorporateLocationSelector.SelectedValue = (文字列)この.ItemFieldValue;
} // セット
} // オブジェクト値をオーバーライドします。

保護 オーバーライド void CreateChildControls()
{

場合 (この.フィールド = = null || この.ControlMode = = SPControlMode.ディスプレイ)
戻り値;

ベース.CreateChildControls();

この.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer。("XYZZYCorporateLocationSelector");

場合 (この.XYZZYCorporateLocationSelector = = null)
スロー 新機能 例外("エラー: 読み込むことができません。ASCX ファイル!");

場合 (!この.IsPostBack ページ。)
{

使用してください。 (SPSite サイト = 新機能 SPSite("http://localhost/enterprisedata"))
{
使用してください。 (SPWeb web サイトを =。OpenWeb())
{

SPList 現時点 web を =。リスト[「企業の場所"];

foreach (SPItem XYZZYCorporateLocation currentList.Items)
{
場合 (XYZZYCorporateLocation[「タイトル"] == null) 続行;

文字列 件名;
タイトル = XYZZYCorporateLocation[「タイトル"].ToString();

この.XYZZYCorporateLocationSelector.Items.Add
(新機能 ListItem(件名, 件名));

} // foreach

} // spweb の web を使用して site.openweb を =()
} // spsite のサイトを使用して新しい spsite を =("http://localhost/enterprisedata")

} // そうでない場合、ポストバック

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

上記のコードは基本的に DropDownList にある WSS カスタム リストから値を設定するロジックを実装します。 http://localhost/enterprisedata 名前付きの「企業部門」.

1 つの .cs ファイルで両方のクラスを定義しました。, それをコンパイルし、GAC に配置 (強い必要, もちろんです).

  1. コントロール テンプレートを実装します。 (.ascx) 示すように:

<%@ コントロール 言語="C#" 継承="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,バージョン 12.0.0.0 文化を = = ニュートラル,PublicKeyToken = は 71e9bce111e9429c" compilationMode"常に =" %>
<%
@ 登録 Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" アセンブリ="Microsoft.SharePoint, バージョン = 12.0.0.0, カルチャ ニュートラル =, PublicKeyToken = は 71e9bce111e9429c" %> <%@ 登録 Tagprefix"SharePoint を =" Namespace="Microsoft.SharePoint.WebControls" アセンブリ="Microsoft.SharePoint, バージョン = 12.0.0.0, カルチャ ニュートラル =, PublicKeyToken = は 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID"XYZZYCorporateLocationFieldControl =" runat「サーバー」を =>
<テンプレート>
<asp:DropDownList ID"XYZZYCorporateLocationSelector =" runat"server =" />
</テンプレート>
</
SharePoint:RenderingTemplate>

上記が c に保存されます。:\プログラム \ 共通ファイル \ ファイルにサーバー extensions12controltemplates.

  1. 最後に, 我々 に保存する XML ファイルを作成、... 12XML ディレクトリ. これは、カスタム データ型を定義する CAML と私の例, 次のような:

<?xml バージョン="1.0" エンコード="utf-8" ?>
<
フィールド型>
<
FieldType>
<
フィールド 名前="TypeName">CorporateLocations</フィールド>
<
フィールド 名前="ParentType">本文</フィールド>
<
フィールド 名前="TypeDisplayName">企業の場所</フィールド>
<
フィールド 名前="TypeShortDescription">製造用又はその他の施設を含むすべての XYZZY 企業の場所.</フィールド>
<
フィールド 名前="UserCreatable"></フィールド>
<
フィールド 名前="ShowInListCreate"></フィールド>
<
フィールド 名前="ShowInDocumentLibraryCreate"></フィールド>
<
フィールド 名前="ShowInSurveyCreate"></フィールド>
<
フィールド 名前="ShowInColumnTemplateCreate"></フィールド>
<
フィールド 名前="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, バージョン 1.0.0.0 を =, カルチャ ニュートラル =, PublicKeyToken = b0b19e85410990c4</フィールド>
<
RenderPattern 名前="DisplayPattern">
<
スイッチ>
<
Expr>
<
/>
</
Expr>

<ケース =""/>

<既定>
<
HTML>
<![CDATA[
<またがるスタイル ="色:「赤」><b>]]>
</
HTML>

<
SubColumnNumber="0" HTMLEncode=""/>

<HTML><![CDATA[</b></スパン>]]></HTML>

</
既定>
</
スイッチ>

</
RenderPattern>
</
FieldType>
</
フィールド型>
この XML ファイル WSS"ライブラリにカスタム データ型を追加します" GAC に対してと一致するアセンブリがあった.

これらのすべてのビットを所定の位置に移動した後, サーバーとそれに iisreset 心地よく働いてすべてスタートする必要があります。.

MOSS: カスタム リストを更新

カスタム リスト、SDK を更新するには、多くの良い例です。. ここではもう.

ビジネス上の問題: InfoPath フォーム在庫要求をオンラインの入力を可能に購入しています. PO 番号伝統的なシーケンスする必要があります要求整数値に基づいて、自動的に計算.

ビジネス ソリューション: 2 つの列を含む、カスタムの MOSS リストを作成します。: "ControlField" 「調整」. [値] 列に、次の購入注文番号が含まれています. 一般的な"制御することに注意してください。" 必要に応じて使用することがあります将来のコントロール フィールドの名前付け規則を提供します.

技術ソリューション: InfoPath クライアントによってアクセスされる web サービスを作成します。. Web サービスの次の購入注文番号を返すし、リストの値を更新.

学んだ教訓:

  • InfoPath フォームにデータ ソースとしてこの web サービスを追加するとき, Udc を変換し、データ接続ライブラリに格納する必要があると見つけた.
  • 私はまたそれ経由中央サービス管理でクロス ドメイン スクリプティングを有効にする必要があります。 // アプリケーション構成の管理 // フォーム サーバーの構成.
  • 初めてフォーム web サービスにアクセスしようとしました。, しばらく時間がかかり、機会に, それは時間を. タイムアウト設定を展開しますフォーム サーバー構成では設定をいじって、それに役立つように見えた.

コード:

使用してください。 システム;
使用してください。 System.Web;
使用してください。 System.Web.Services;
使用してください。 System.Web.Services.Protocols;
使用してください。 Microsoft.SharePoint;
使用してください。 System.Configuration;

[Web サービス(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
パブリック クラス PoService : System.Web.Services.Web サービス
{
パブリック PoService () {

//デザインされたコンポーネントを使用している場合、次の行のコメントを解除します。
//InitializeComponent();
}

/// <概要>
/// Sharepoint po 番号コントロール リストから次の PO 番号を取得します。.
/// そのリスト内の PO 番号をインクリメントします。.
/// </概要>
/// <返します></返します>
[WebMethod]
パブリック 文字列 GetNextPoNumber()
{
文字列 SpPoControlSiteName; // PO 制御リストをホストする実際の MOSS サイトの名前.
文字列 SpPoControlListName; // Po コントロールを含む実際の MOSS リストの名前.

SpPoControlSiteName = フレーム.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = フレーム.AppSettings["PoControlList"].ToString();

文字列 nextPoReqNumber = "xyzzy";

使用してください。 (SPSite サイト = 新機能 SPSite(SpPoControlSiteName))
{
使用してください。 (SPWeb web サイトを =。OpenWeb())
{

SPList 現時点 web を =。リスト[SpPoControlListName];

foreach (SPItem controlItem currentList.Items)
{

場合 (((文字列)controlItem["ControlField"]).等しい("NextPoNumber"))
{
nextPoReqNumber = (文字列)controlItem[「調整"];

int int_nextPoReqNumber;
int_nextPoReqNumber = 変換.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem[「調整"] = int_nextPoReqNumber;
controlItem.Update();
}

} // 検索, 読み取りと一覧内の PO 番号を更新.


} // spweb の web を使用して site.openweb を =()
} // spsite のサイトを使用して新しい spsite を =("http://localhost/みずほ」)

戻り値 nextPoReqNumber;

}
}