0

私の問題は権限に関連しているようですが、解決方法がわかりません。

ある機能の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));
4

1 に答える 1

0

-Force スイッチを Enable-SPFeature コマンドに追加している間、ソリューションを追加するときに別のプロセスを使用して機能をアクティブ化したが、ソリューションを更新するときに機能しなかったことを発見したため、最終的にこの問題にパントしました。最終的に、URI の代わりに TextReader を使用するように XDocument.Load() を変更しました。xml ファイルはパッケージの一部であるため、WSP を展開するときに常に使用できるため、IIS と webrequest を使用して xml をロードする必要はありません。

于 2012-09-24T18:21:58.087 に答える