2012-09-06 50 views
0

我的問題似乎與權限有關,但我不知道如何解決它。Featurereceiver sharepoint 2010 xdocument 503

在我的某個功能的FeatureActivated事件中,我調用了爲使用SPWebConfigModification類管理webconfig條目而創建的類。該類將讀取已添加到項目中映射的佈局文件夾的xml文件。

當我將.wsp部署到我的Sharepoint服務器時,一切都安裝正常,但是當FeatureActivated事件運行時,它在嘗試訪問xml文件時會引發503錯誤。我正在使用powershell腳本遠程部署.wsp,我有PowerShell,iisapp池和owstimer.exe都使用相同的域管理用戶。

我認爲問題是在OWSTIMER.exe的範圍內運行FeatureActivated事件代碼,因此將該服務的登錄更改爲具有對服務器的管理訪問權的域用戶,以查看是否可以解決問題,但不管我得到什麼503.

我已經追溯到xml文件的URL並將其粘貼到IE中,一旦它被複制,我將從服務器獲取沒有問題的xml。

任何人都可以給我任何想法在哪裏尋找弄清楚爲什麼FeatureActivated事件代碼似乎無法到達服務器上的XML文件?

以下是我的類中正在從FeatureActivated事件中調用以讀取xml的代碼。

_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)); 
+0

在這個問題中是否有代理?我注意到你沒有爲它設置任何設置。 – Truezplaya

+0

事實證明,問題實際上是在您將其告訴Install-SPSolution後,Sharepoint推出解決方案的方式。 Sharepoint使用運行執行FeatureReceiver代碼的轉出的作業來執行OWSTimer.exe。所以我用-Force開關添加了一個Enable-SPFeature命令。這會導致可以訪問_layouts目錄的WMSPROVHOST.exe進程激活功能。因此,初始部署工作會部分發揮作用,並且我必須在其上重新啓用強制啓用才能使FeatureReceiver代碼正常運行。如果我錯過沿着CestLaVie的方式。 – Maxmanzero

+0

我剛剛意識到我沒有回答你的問題。你的意思是代理服務器?目前我的配置中沒有代理服務器。 – Maxmanzero

回答

0

我終於踢上這個問題,因爲我發現,同時加入了 - 強制切換到啓用-SPFeature命令沒有使用不同的工藝來激活該功能添加解決方案時,沒有奏效更新解決方案時, 。最終,我只是將我的XDocument.Load()更改爲使用TextReader而不是URI。在部署WSP時xml文件將始終可用,因爲它是軟件包的一部分,所以沒有理由使用IIS和webrequest來加載xml。