MOSS07 http://blogs.ugidotnet.org/franx_blog/category/MOSS07.aspx Microsoft Sharepoint 2007 it-IT Francesco Geri Subtext Version 2.6.0.0 Inserimento di una data precedente al 1/1/1970 in SharePoint http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx <p>Se elaborando documenti e proprietà su SharePoint (2007) vi capitasse un errore come questo:</p> <p><em>Microsoft.SharePoint.SPInvalidPropertyException: Date Times before 1/1/1970 are not supported.</em></p> Allora il problema potrebbe essere quello capitato anche a me oggi. <p>Il mio codice eseguiva l’upload di un documento su SharePoint e contestuale valorizzazione delle sue proprietà, il tutto tramite il metodo Add dell’oggetto SPFolder. <br />Se fra le proprietà c’è una data allora come valore è bene passare quello ottenuto dalla funzione <a title="SPUtility.CreateISO8601DateTimeFromSystemDateTime" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.createiso8601datetimefromsystemdatetime.aspx" target="_blank">SPUtility.CreateISO8601DateTimeFromSystemDateTime</a>, ovvero una stringa con la rappresentazione UTC della data (formato ISO8601, ovvero yyyy-mm-ddThh:mm:ssZ).</p> <p> Il codice corretto è il seguente.</p> <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; font-size: 8pt; overflow: hidden; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"> <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">' Crea una Hashtable delle proprietà</span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">Dim</span> myProps <span style="color: #0000ff">As</span> <span style="color: #0000ff">New</span> Hashtable()</pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">Dim</span> propName <span style="color: #0000ff">As</span> <span style="color: #0000ff">String</span> = <span style="color: #006080">"MyDatePropName"</span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">' Imposta come valore una stringa con il formato UTC, ottenuta come segue: </span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">Dim</span> propValue <span style="color: #0000ff">As</span> <span style="color: #0000ff">Object</span> = SPUtility.CreateISO8601DateTimeFromSystemDateTime(<span style="color: #0000ff">New</span> DateTime(1950, 1, 1))</pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">' ... invece di: Dim propValue As Object = New DateTime(1950, 1, 1)</span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">myProps.Add(propName, propValue)</pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">' Recupera l'oggetto SPFolder dall'oggetto SPWeb corrente</span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">Dim</span> oFolder <span style="color: #0000ff">as</span> SPFolder = myWeb.GetFolder(myFolderURL)</pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">' Aggiunge il file con le proprietà</span></pre> <!--CRLF--> <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">Dim</span> objDestFile <span style="color: #0000ff">as</span> SPFile = objDestFolder.Files.Add(myFolderURL &amp; <span style="color: #006080">"/"</span> &amp; myFileName, myDocumentSourceStream, myProps)</pre> <!--CRLF--></div> </div> <p> </p> <p>Due osservazioni:</p> <ol> <li>Passando la data nuda e cruda (il datetime) si ha un errore per date inferiori all’1/1/1970, mentre per date successive funziona.</li> <li>Passando una stringa che non sia una data non succede nulla… nel senso che non c’è eccezione, il documento viene caricato e la proprietà resta vuota</li> </ol> <p> </p> <p>Note: Grazie a <a title="Gabriele Del Giovine" href="http://blogs.dotnethell.it/gdelgiovine/" target="_blank">Gabriele</a> per i suggerimenti!</p><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/98593.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx Wed, 19 May 2010 12:15:50 GMT http://blogs.ugidotnet.org/franx_blog/archive/2010/05/19/98593.aspx#feedback 5 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/98593.aspx Eseguire lo Shrink del database di contenuto di WSS http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx <p>Come fare ad eseguire lo shrink del database di contenuto di WSS, quando WSS utilizza l'istanza di Sql Server propria (quella che crea il setup di WSS)?</p> <p>Il problema è che da SQL Server Management Studio non ci si può connettere all'istanza di SQL Server de iWSS (almeno questo mi risulta).</p> <p>Allora si può ricorrere alla linea di comando.</p> <ul> <li>Aprire il prompt dei comandi</li> <li>Posizionarsi sulla cartella (SQL Server 2008): <br /> <br />&lt;drive&gt;:\Program Files\Microsoft SQL Server\90\Tools\Binn <br /></li> <li>eseguire il comando: <br /> <br />sqlcmd -S <em><font color="#0080c0">MY_SERVER\MICROSOFT##SSEE</font></em> -q "dbcc shrinkdatabase(<em><font color="#0080c0">MY_WSS_CONTENT_DB</font></em>)"</li> </ul> <p> </p> <p>Dove:</p> <p><font color="#0080c0"><em>MY_SERVER\MICROSOFT##SSEE</em></font><font color="#000000"> è l'istanza di SQL Server</font></p> <p><font color="#0080c0"><em>MY_WSS_CONTENT_DB</em> <font color="#000000">è il database di WSS</font></font></p> <p> </p> <p>Naturalmente ringrazio il collega <a title="Blog di Osvaldo" href="http://blogs.devleap.com/osvaldoaluigi/default.aspx" target="_blank">Osvaldo</a> che mi ha supportato nel determinare il comando sql da eseguire!</p><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/94856.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx Thu, 04 Dec 2008 05:50:57 GMT http://blogs.ugidotnet.org/franx_blog/archive/2008/12/04/94856.aspx#feedback 1 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/94856.aspx Nel meraviglioso mondo di SharePoint! http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx <p><strong><font color="#ff0000">Problema</font></strong>:</p> <p>Se da codice imposto una proprietà di tipo data+ora di un documento contenuto in una Document Library di SharePoint mi ritrovo un valore diverso da quallo impostato. In particolare ho uno sfasamento di un'ora o due.</p> <p> </p> <p><strong><font color="#008080">Soluzione</font></strong>:</p> <p>Certo, direte voi, devi usare le date in <a href="http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm" target="_blank">formato UTC</a>.</p> <p>Allora vediamo coda succede in 2 casi, cioè se il file esiste e modifico la sua proprietà, oppure se il file è creato nuovo e la proprietà assegnata all'upload.</p> <p>L'esempio suppone che:</p> <ul> <li>ci sia un documento all'url <em><font color="#0080ff">http://myServer/mySite/myDocLib</font></em> </li> <li>la document library che contiene quel documento abbia una proprietà di nome <em><font color="#0080ff">myDateTimeProp</font></em> </li> </ul> <p>Il codice di esempio (inserito in un qualche button click) esegue l'update della proprietà del documento esistente, poi crea un nuovo documento (con il contenuto del precedente) assegnandogli un certo valore della proprietà di tipo Data.</p> <p>Si noti che nel primo caso (update) si deve usare la data nel suo formato normale, nel secondo la si deve convertire in formato UTC.</p> <p>Ogni altra combinazione non sembra funzionare.</p> <p> </p> <!-- {\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red0\green128\blue0;\red163\green21\blue21;}??\fs22 \cf1 Private\cf0 \cf1 Sub\cf0 Button2_Click(\cf1 ByVal\cf0 sender \cf1 As\cf0 System.Object, \cf1 ByVal\cf0 e \cf1 As\cf0 System.EventArgs) \cf1 Handles\cf0 Button2.Click\par ??\tab \tab \cf4 ' Esegue l'update della data:\par ??\cf0 \tab \tab \cf1 Dim\cf0 urlDoc \cf1 As\cf0 \cf1 String\cf0 = \cf5 "http://win2k3-moss07-f/josh/TestProps/AD00000049.tif"\par ??\cf0 \tab \tab \cf1 Dim\cf0 objSite \cf1 As\cf0 SPSite = \cf1 Nothing\par ??\cf0 \tab \tab \cf1 Dim\cf0 objWeb \cf1 As\cf0 SPWeb = \cf1 Nothing\par ??\cf0 \tab \tab \cf1 Try\par ??\cf0 \tab \tab \tab \cf1 Me\cf0 .Cursor = Cursors.WaitCursor\par ??\tab \tab \tab \cf4 ' Crea gli oggetti SPSite ed SPWeb \par ??\cf0 \tab \tab \tab objSite = \cf1 New\cf0 SPSite(urlDoc)\par ??\tab \tab \tab objWeb = objSite.OpenWeb\par ??\tab \tab \tab \cf4 '' Cerca la document library\par ??\cf0 \tab \tab \tab \cf1 Dim\cf0 objItem \cf1 As\cf0 SPListItem = objWeb.GetListItem(urlDoc)\par ??\tab \tab \tab objItem.Item(\cf5 "DataeOra"\cf0 ) = Now.ToUniversalTime\par ??\tab \tab \tab objItem.Update()\par ??\tab \tab \tab \cf1 Dim\cf0 s \cf1 As\cf0 IO.Stream = objItem.File.OpenBinaryStream()\par ??\tab \tab \tab \cf1 Dim\cf0 props \cf1 As\cf0 \cf1 New\cf0 Hashtable\par ??\tab \tab \tab props.Add(\cf5 "DataeOra"\cf0 , Now)\par ??\tab \tab \tab objItem.File.ParentFolder.Files.Add(\cf5 "test.tif"\cf0 , s, props)\par ??\tab \tab \cf1 Catch\cf0 ex \cf1 As\cf0 Exception\par ??\tab \tab \tab MessageBox.Show(ex.ToString)\par ??\tab \tab \cf1 Finally\par ??\cf0 \tab \tab \tab \cf1 If\cf0 \cf1 Not\cf0 objSite \cf1 Is\cf0 \cf1 Nothing\cf0 \cf1 Then\cf0 objSite.Dispose()\par ??\tab \tab \tab \cf1 If\cf0 \cf1 Not\cf0 objWeb \cf1 Is\cf0 \cf1 Nothing\cf0 \cf1 Then\cf0 objWeb.Dispose()\par ??\tab \tab \tab \cf1 Me\cf0 .Cursor = Cursors.Default\par ??\tab \tab \cf1 End\cf0 \cf1 Try\par ??\cf0 \tab \cf1 End\cf0 \cf1 Sub} --> <div style="font-size: 11pt; background: white; color: black; font-family: consolas"> <p style="margin: 0px"><span style="color: #2b91af"></span></p> <p style="margin: 0px"><span style="color: #2b91af">    1</span> <span style="color: blue">Private</span> <span style="color: blue">Sub</span> Button1_Click(<span style="color: blue">ByVal</span> sender <span style="color: blue">As</span> System.Object, <span style="color: blue">ByVal</span> e <span style="color: blue">As</span> System.EventArgs) <span style="color: blue">Handles</span> Button1.Click</p> <p style="margin: 0px"><span style="color: #2b91af">    2</span>     <span style="color: green">' Esegue l'update della data:</span></p> <p style="margin: 0px"><span style="color: #2b91af">    3</span>     <span style="color: blue">Dim</span> urlDoc <span style="color: blue">As</span> <span style="color: blue">String</span> = <span style="color: #a31515">"http://myServer/mySite/myDocLib/myDoc1.tif"</span></p> <p style="margin: 0px"><span style="color: #2b91af">    4</span>     <span style="color: blue">Dim</span> objSite <span style="color: blue">As</span> SPSite = <span style="color: blue">Nothing</span></p> <p style="margin: 0px"><span style="color: #2b91af">    5</span>     <span style="color: blue">Dim</span> objWeb <span style="color: blue">As</span> SPWeb = <span style="color: blue">Nothing</span></p> <p style="margin: 0px"><span style="color: #2b91af">    6</span>     <span style="color: blue">Try</span></p> <p style="margin: 0px"><span style="color: #2b91af">    7</span>       <span style="color: blue">Me</span>.Cursor = Cursors.WaitCursor</p> <p style="margin: 0px"><span style="color: #2b91af">    8</span>       <span style="color: green">' Crea gli oggetti SPSite ed SPWeb </span></p> <p style="margin: 0px"><span style="color: #2b91af">    9</span>       objSite = <span style="color: blue">New</span> SPSite(urlDoc)</p> <p style="margin: 0px"><span style="color: #2b91af">   10</span>       objWeb = objSite.OpenWeb</p> <p style="margin: 0px"><span style="color: #2b91af">   11</span>       <span style="color: green">'' Cerca la document library</span></p> <p style="margin: 0px"><span style="color: #2b91af">   12</span>       <span style="color: blue">Dim</span> objItem <span style="color: blue">As</span> SPListItem = objWeb.GetListItem(urlDoc)</p> <p style="margin: 0px; background-color: #ffff33"><span style="color: #2b91af">   13</span>       objItem.Item(<span style="color: #a31515">"myDateTimeProp"</span>) = Now</p> <p style="margin: 0px"><span style="color: #2b91af">   14</span>       objItem.Update()</p> <p style="margin: 0px"><span style="color: #2b91af">   15</span>       <span style="color: blue">Dim</span> stream <span style="color: blue">As</span> IO.Stream = objItem.File.OpenBinaryStream()</p> <p style="margin: 0px"><span style="color: #2b91af">   16</span>       <span style="color: blue">Dim</span> props <span style="color: blue">As</span> <span style="color: blue">New</span> Hashtable</p> <p style="margin: 0px; background-color: #ffff33"><span style="color: #2b91af">   17</span>       props.Add(<span style="color: #a31515">"myDateTimeProp"</span>, Now.ToUniversalTime)</p> <p style="margin: 0px"><span style="color: #2b91af">   18</span>       objItem.File.ParentFolder.Files.Add(<span style="color: #a31515">"myDoc2.tif"</span>, stream, props)</p> <p style="margin: 0px"><span style="color: #2b91af">   19</span>       stream.Dispose()</p> <p style="margin: 0px"><span style="color: #2b91af">   20</span>     <span style="color: blue">Catch</span> ex <span style="color: blue">As</span> Exception</p> <p style="margin: 0px"><span style="color: #2b91af">   21</span>       MessageBox.Show(ex.ToString)</p> <p style="margin: 0px"><span style="color: #2b91af">   22</span>     <span style="color: blue">Finally</span></p> <p style="margin: 0px"><span style="color: #2b91af">   23</span>       <span style="color: blue">If</span> <span style="color: blue">Not</span> objSite <span style="color: blue">Is</span> <span style="color: blue">Nothing</span> <span style="color: blue">Then</span> objSite.Dispose()</p> <p style="margin: 0px"><span style="color: #2b91af">   24</span>       <span style="color: blue">If</span> <span style="color: blue">Not</span> objWeb <span style="color: blue">Is</span> <span style="color: blue">Nothing</span> <span style="color: blue">Then</span> objWeb.Dispose()</p> <p style="margin: 0px"><span style="color: #2b91af">   25</span>       <span style="color: blue">Me</span>.Cursor = Cursors.Default</p> <p style="margin: 0px"><span style="color: #2b91af">   26</span>     <span style="color: blue">End</span> <span style="color: blue">Try</span></p> <p style="margin: 0px"><span style="color: #2b91af">   27</span>   <span style="color: blue">End</span> <span style="color: blue">Sub</span></p> <p style="margin: 0px"><span style="color: blue"></span></p> <p style="margin: 0px"> </p> <p style="margin: 0px"><strong><em><font color="#008000">Considerazioni finali</font></em></strong></p> <p style="margin: 0px">Si tratta di una mia personalissima ipotesi, ma secondo me i team di sviluppo della funzionalità di update e di quella di addnew sono distinti, separati e non comunicanti.</p> <p style="margin: 0px"></p> </div><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/93271.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx Wed, 02 Jul 2008 23:59:30 GMT http://blogs.ugidotnet.org/franx_blog/archive/2008/07/02/93271.aspx#feedback 4 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/93271.aspx MOSS 2007: file .p7m e file .p7c http://blogs.ugidotnet.org/franx_blog/archive/2007/12/14/90284.aspx <p>Oggi ho caricato un documento .p7m in una document library di SharePoint 2007. </p> <p>Poi ne ho fatto il download e magicamente il mio file .p7m era diventato un .p7c...</p> <p>Cioè se su SharePoint c'è un file p7m e si prova a scaricarlo o aprirlo SharePoint lo restituisce cambiandogli l'estensione in p7c.</p> <p>Basta rinominarlo per riavere il file di origine.</p> <p>Tuttavia, per risolvere il problema alla radice occorre:</p> <ul> <li> andare sul web server iis (sul web site di riferimento)</li> <li>aggiungere o modificare l'estensione .p7m con il seguente mime type: x-application/pkcs7-mime. <br /> </li> <li>riavviare l'application pool di riferimento. <br /> </li> </ul> <p><font size="1">(Per la soluzione grazie al collega Alfredo)</font></p> <p><br /> </p><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/90284.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2007/12/14/90284.aspx Fri, 14 Dec 2007 05:26:28 GMT http://blogs.ugidotnet.org/franx_blog/archive/2007/12/14/90284.aspx#feedback 4 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/90284.aspx Event ID 27745 - WSS 3 http://blogs.ugidotnet.org/franx_blog/archive/2007/12/11/90221.aspx <p>Oggi mi è capitato di riscontrare su un server con installato SharePoint Portal Server 2007 una serie di strani malfuzionamenti.</p> <p>Nel registro eventi di Windows ho trovato una serie molto numerosa di log con il seguente errore: </p> <p><em><font size="2" face="Verdana" color="#800000">The description for Event ID ( 27745 ) in Source ( Windows SharePoint Services 3 ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the / AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: #50071: Unable to connect to the database WSS_Content on &lt;our sql server&gt;. Check the database connection information and make sure that the database server is running</font></em></p> <p> </p> <p>Cercando cercando non ho trovato la causa, ma ho trovato un post (a questo <a target="_blank" href="http://www.eggheadcafe.com/software/aspnet/30576497/error-event-id-27745.aspx">link</a>) in cui si suggeriva di riavviare i seguenti servizi:</p> <ul> <li>Distributed Transaction Coordinator (MSDTC) </li> <li>Windows SharePoint services Administration </li> <li>Windows SharePoint Services Search </li> <li>Windows SharePoint Services Timer </li> <li>Windows SharePoint Services Tracing</li> </ul> <p>Reinserendo le credenziali dell'utente se non fossero ripartiti.</p> <p>Nel mio caso il riavvio di quei servizi ha sistemato le cose, per cui posto nel caso servisse ad altri.</p> <p>Non ho ancora capito la causa del tutto, ma prometto che se la scopro ri-posto!</p><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/90221.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2007/12/11/90221.aspx Tue, 11 Dec 2007 03:29:01 GMT http://blogs.ugidotnet.org/franx_blog/archive/2007/12/11/90221.aspx#feedback 2 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/90221.aspx Upload di un documento su MOSS07 con proprietà http://blogs.ugidotnet.org/franx_blog/archive/2007/10/23/89154.aspx <p>Il codice seguente esegue l'upload di un documento su MOSS 07.<br /> Le parti interessanti del codice proposto sono 2:</p> <ol> <li>Il codice imposta anche le proprietà del documento in un'unica operazione, quindi generando un'unica versione del documento (nel caso di versionamento attivato). Da notare che la stessa cosa non era possibile nel modello ad oggetti di SharePoint 2003. </li> <li>I valori delle proprietà sono impostati in base al nome visualizzato della proprietà stessa, per cui il codice si preoccupa di trovare il nome interno e convertirlo nel formato opportuno. </li> </ol> <p> </p> <font color="#0000ff"><font face="Courier New" size="2"><font color="#0000ff" size="2"> <p>Imports <font size="2">Microsoft.SharePoint</font></p> <p> </p> </font>Sub </font></font><font face="Courier New" size="2">UploadFile()<br />   </font><font size="2"><font color="#008000"><font face="Courier New">' Recupera l'oggetto SPSite<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> objSite <font color="#0000ff">As</font> <font color="#0000ff">New</font> SPSite(<font face="Courier New"><font color="#a31515">"http://myServer/MyWebSite/"</font></font></font></font><font face="Courier New" size="2">)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Recupera l'oggetto SPWeb<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> objWeb <font color="#0000ff">As</font></font></font><font face="Courier New" size="2"> SPWeb = objSite.OpenWeb()<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Recupera l'oggetto SPDocumentLibrary<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> objDocLib <font color="#0000ff">As</font> SPDocumentLibrary = objWeb.Lists(<font color="#a31515">"MyDocLib"</font></font></font><font face="Courier New" size="2">)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Predispone una Hashtable per le proprietà del documento<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> properties <font color="#0000ff">As</font> <font color="#0000ff">New</font></font></font><font face="Courier New" size="2"> Hashtable<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Predispone una variabile per il nome della proprietà corrente<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> propertyName <font color="#0000ff">As</font> </font></font><font color="#0000ff"><font face="Courier New" size="2">String<br /> </font></font><font size="2"><font color="#008000"><font face="Courier New">  ' Recupera il profilo della document library<br /> </font></font><font face="Courier New"><font color="#0000ff">  For</font> i <font color="#0000ff">As</font> <font color="#0000ff">Integer</font> = 0 <font color="#0000ff">To</font></font></font><font size="2"><font face="Courier New"> objDocLib.Fields.Count - 1<br /> </font><font face="Courier New"><font color="#0000ff">    Select</font> <font color="#0000ff">Case</font></font></font><font size="2"><font face="Courier New"> objDocLib.Fields(i).Title<br /> </font><font face="Courier New"><font color="#0000ff">      Case</font> </font></font><font color="#a31515"><font face="Courier New" size="2">"Proprietà 1"<br /> </font></font><font color="#008000"><font face="Courier New" size="2">        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà<br /> </font></font><font face="Courier New" size="2">        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">        ' Aggiunge la coppia (nome XML, valore) per la proprietà<br /> </font></font><font face="Courier New">        properties.Add(propertyName, </font><font face="Courier New" color="#a31515">"Valore 1"</font></font><font size="2"><font face="Courier New">)<br /> </font><font face="Courier New"><font color="#0000ff">      Case</font> </font></font><font color="#a31515"><font face="Courier New" size="2">"Proprietà 2"<br /> </font></font><font color="#008000"><font face="Courier New" size="2">        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà<br /> </font></font><font face="Courier New" size="2">        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">        ' Aggiunge la coppia (nome XML, valore) per la proprietà<br /> </font></font><font face="Courier New">        properties.Add(propertyName, </font><font face="Courier New" color="#a31515">"Valore 2"</font></font><font size="2"><font face="Courier New">)<br /> </font><font face="Courier New"><font color="#0000ff">      Case</font> </font></font><font color="#a31515"><font face="Courier New" size="2">"Proprietà 3"<br /> </font></font><font color="#008000"><font face="Courier New" size="2">        ' Converte il nome interno nella nome XML per la Hashtable delle proprietà<br /> </font></font><font face="Courier New" size="2">        propertyName = System.Xml.XmlConvert.DecodeName(objDocLib.Fields(i).InternalName)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">        ' Aggiunge la coppia (nome XML, valore) per la proprietà<br /> </font></font><font face="Courier New">        properties.Add(propertyName, </font><font face="Courier New" color="#a31515">"Valore 3"</font></font><font size="2"><font face="Courier New">)<br /> </font><font face="Courier New"><font color="#0000ff">    End</font> </font></font><font size="2"><font color="#0000ff"><font face="Courier New">Select<br /> </font></font><font face="Courier New" color="#0000ff">  Next</font></font><font face="Courier New" size="2"> i<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Recupera l'oggetto SPFolder corrispondente alla root folder della document library<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> objFolder <font color="#0000ff">As</font></font></font><font face="Courier New" size="2"> SPFolder = objDocLib.RootFolder<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Legge il documento<br /> </font></font><font face="Courier New"><font color="#0000ff">  Dim</font> fStream <font color="#0000ff">As</font> IO.FileStream = IO.File.OpenRead(<font color="#a31515">"c:\myFolder\myDoc.doc"</font></font></font><font size="2"><font face="Courier New">)<br /> </font><font face="Courier New"><font color="#0000ff">  Dim</font> fContent(fStream.Length - 1) <font color="#0000ff">As</font> </font></font><font color="#0000ff"><font face="Courier New" size="2">Byte<br /> </font></font><font face="Courier New" size="2">  fStream.Read(fContent, 0, fStream.Length)<br /> </font><font size="2"><font color="#008000"><font face="Courier New">  ' Aggiunge il documento con le proprietà<br /> </font></font><font face="Courier New">  objFolder.Files.Add(</font><font face="Courier New"><font color="#a31515">"http://myServer/MyWebSite/MyDocLib/myDoc.doc"</font>, fContent, properties, <font color="#0000ff">True</font></font></font><font face="Courier New" size="2">)<br /> </font><font color="#008000"><font face="Courier New" size="2">  ' Chiude lo stream e ne fa la Dispose<br /> </font></font><font face="Courier New" size="2">  fStream.Close()<br /> </font><font face="Courier New" size="2">  fStream.Dispose()<br /> </font><font color="#008000"><font face="Courier New" size="2">  ' Esegue le Dispose degli oggetti relativi a Sharepoint<br /> </font></font><font face="Courier New" size="2">  objWeb.Dispose()<br /> </font><font size="2"><font face="Courier New">  objSite.Dispose()<br /> </font><font face="Courier New"><font color="#0000ff">End</font> <font color="#0000ff">Sub</font></font></font><img src="http://blogs.ugidotnet.org/franx_blog/aggbug/89154.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2007/10/23/89154.aspx Tue, 23 Oct 2007 00:11:41 GMT http://blogs.ugidotnet.org/franx_blog/archive/2007/10/23/89154.aspx#feedback http://blogs.ugidotnet.org/franx_blog/comments/commentRss/89154.aspx Creating Custom Web Service for Sharepoint 2007 (2) http://blogs.ugidotnet.org/franx_blog/archive/2006/08/31/47028.aspx <img src="http://blogs.ugidotnet.org/franx_blog/aggbug/47028.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2006/08/31/47028.aspx Thu, 31 Aug 2006 12:36:00 GMT http://blogs.ugidotnet.org/franx_blog/archive/2006/08/31/47028.aspx#feedback 3 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/47028.aspx Creating Custom Web Services for SharePoint 2007 http://blogs.ugidotnet.org/franx_blog/archive/2006/08/02/45780.aspx Salve a tutti! Escluso il post di benvenuto, il mio esordio a tutti gli effetti sul mio blog avviene con questo primo vero post. Il problema nasce stamattina, quando ho deciso di creare un web service con VS2005 da inserire in Sharepoint 2007 (una piccola prova, tipo il semplice download di un file, giusto per prendere confidenza con i due strumenti). [...leggi <a href="http://blogs.ugidotnet.org/franx_blog/archive/2006/08/02/45780.aspx">qui</a>...] <img src="http://blogs.ugidotnet.org/franx_blog/aggbug/45780.aspx" width="1" height="1" /> Francesco Geri http://blogs.ugidotnet.org/franx_blog/archive/2006/08/02/45780.aspx Wed, 02 Aug 2006 19:23:00 GMT http://blogs.ugidotnet.org/franx_blog/archive/2006/08/02/45780.aspx#feedback 5 http://blogs.ugidotnet.org/franx_blog/comments/commentRss/45780.aspx