今週は、新しいSharePointソリューションを使用して本番環境に移行しました。ステージング環境での開発とテストに1年近く費やした後、次のエラーが発生したのは初めてです。
エラー:動作する場合もあれば、404でクラッシュする場合もあります
SharePointソリューションではNintexワークフローを使用していますが、ここではNintexが取引を妨げるものではないと思います。このワークフロー(およびその他のワークフロー)から、SharePointファームの_vti_binでホストされているカスタムasmxWebサービスを呼び出しています。Webサービス内のすべては、昇格された特権で実行されます。ワークフローがWebサービスを呼び出しているとき、Webサービスは一部のユーザーに対してランダムに404エラーを返します。リソースが見つかりません。ここで欠落しているリソースは、Webサービスへのasmxパスです。
興味深いことに、このエラーは、お客様のユーザーの1人がワークフローを開始している場合にのみ発生しますが、テストログインの1つがワークフローイニシエーターである場合は発生しません。このエラーは、顧客のユーザーの5回のテスト実行のうち2回のみ発生しています。テストログインをテスト実行に使用すると、このようなエラーが発生することがありますが、20回の試行のうち3回しか発生しません。エラーは、ワークフローからの別のWebサービス呼び出しで発生しています。顧客のユーザーが試行しているときにクラッシュするのと同じ呼び出しではありません。
環境
SharePoint環境は、2つのWebフロントエンドと1つのアプリケーションサーバーで構成されています。ロードバランサーも動作しています。したがって、私の推測では、環境内のマシンの1つが適切に構成されていません。テストユーザーとテストしているときは、ファームのサーバーと同じネットワークにあるワークステーションでテストしています。これはリモートデスクトップ接続を介して直接実行しており、テストはロードバランサーに合格する必要があります。お客様のユーザーは同様の状況でワークフローをテストしていますが、リモートでテストする場合と同じように、SharePointファームへのルーティングが異なるため、別のフロントエンドにアクセスできると思います。
私がすでに試したこと
- テストユーザーとのワークフローなしでWebサービスを直接テストする
- 各フロントエンドでワークフローを使用せずにWebサービスを直接テストする
- asmxファイルが実際にすべてのマシンのすべての_vti_binフォルダーにあるかどうかを確認する
結論:asmxはどこにでも存在し、Webサービスを手動で呼び出すときにASP.NET固有の404を経験したことはありません。
私の疑い
それは時々機能するので、おそらく1つのフロントエンドがその仕事をうまくやっていると思います。ワークフローが他の(障害のある)フロントエンドで実行されると、問題が発生します。これは、テストユーザーが開始したワークフローが顧客が開始したワークフローとは異なる動作をする理由を説明しています。
それとも許可の問題でしょうか?SharePointファームに対する権限がまったくなく、Webサービスを正常に呼び出すことができたテストユーザーを使用して、_vti_binから手動でWebサービスを呼び出すことをテストしました。または、システムアカウントでワークフローを開始する必要がありますか?
問題を絞り込むためにできることはありますか?ステージングシステムは引き続き正常に機能します。同じバージョン、同じユーザー、問題はありません。
よろしくお願いします。
乾杯