私の問題は権限に関連しているようですが、解決方法がわかりません。
ある機能のFeatureActivatedイベントで、SPWebConfigModificationクラスを使用してwebconfigエントリを管理するために作成したクラスを呼び出しています。このクラスは、プロジェクトのマップされたLayoutsフォルダーに追加したxmlファイルを読み取ります。
.wspをSharepointサーバーに展開すると、すべてが正常にインストールされますが、FeatureActivatedイベントを実行すると、xmlファイルにアクセスしようとすると503エラーがスローされます。PowerShellスクリプトを使用して.wspをリモートで展開しており、PowerShellを使用しています。 、iisappプールとowstimer.exeはすべて同じドメイン管理ユーザーを使用します。
この問題は、FeatureActivatedイベントコードがOWSTIMER.exeのスコープ内で実行されていることであると想定したため、サーバーへの管理アクセス権を持つドメインユーザーにサービスのログオンを変更して、問題が解決するかどうかを確認しましたが、私が503を取得しているものは関係ありません。
xmlファイルへのURLをトレースし、それをIEに貼り付けました。コピーすると、サーバーから問題なくxmlが返されます。
FeatureActivatedイベントコードがサーバー上のXMLファイルに到達できないように見える理由を理解するためにどこを見ればよいか誰かに教えてもらえますか?
以下は、xmlを読み取るためにFeatureActivatedイベントから呼び出されている私のクラスのコードです。
_contentservice = ContentService;
WriteTraceMessage("Getting SPFeatureProperties", TraceSeverity.Medium, 5);
_siteurl = properties.Definition.Properties["SiteUrl"].Value;
_foldername = properties.Definition.Properties["FolderName"].Value;
_filename = properties.Definition.Properties["FileName"].Value;
_sitepath = properties.Definition.Properties["SitePath"].Value;
WriteTraceMessage("Loading xml from layouts for configuration keys", TraceSeverity.Medium, 6);
xdoc = new XDocument();
XmlUrlResolver resolver = new XmlUrlResolver();
XmlReaderSettings settings = new XmlReaderSettings();
StringBuilder sb = new StringBuilder();
sb.Append(_siteurl).Append("_layouts").Append("/").Append(_foldername).Append("/").Append(_filename);
WriteTraceMessage("Path to XML: " + sb.ToString(), TraceSeverity.Medium, 7);
WriteTraceMessage("Credentials for xml reader: " + CredentialCache.DefaultCredentials.ToString(), TraceSeverity.Medium, 8);
resolver.Credentials = CredentialCache.DefaultCredentials; //this the issue might be here
settings.XmlResolver = resolver;
xdoc = XDocument.Load(XmlReader.Create(sb.ToString(), settings));