DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: ASP.NET | Thema: Dokument wieder freigeben | Von: Gerald Weibl ( 27.08.2004 09:53)

Hallo!
Ich verwende die dsofile.dll um mir Custom Properties von Office Dokumenten anzeigen zu lassen. Das funktioniert einwandfrei. Nur wenn ich die Seite aktualisiere bekomme ich eine Fehlermeldung.

Ich zeig euch mal den Code den ich verwende:

[CODE]
protected System.Web.UI.WebControls.Table myTable;
protected DSOleFile.CustomProperties custProps;
protected DSOleFile.PropertyReader objPropReader;
protected DSOleFile.DocumentProperties objDocumentProps;

private void Page_Load(object sender, System.EventArgs e)
{
try
{
string strDirectory = @"c:\temp";
objPropReader = new DSOleFile.PropertyReaderClass();
ArrayList arrListDocumentFullName = new ArrayList();
ArrayList arrListDocumentName = new ArrayList();

DirectoryInfo di = new DirectoryInfo(strDirectory);

FileInfo[] rgFiles = di.GetFiles("*.doc");

foreach(FileInfo objFileInfo in rgFiles)
{
System.IO.FileAttributes objAttrFile = System.IO.File.GetAttributes(objFileInfo.FullName);

if ((objAttrFile & (System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System)) != 0)
{
Response.Write(objFileInfo.Name + ": Hidden Datei<br>");
}
else
{
arrListDocumentFullName.Add(objFileInfo.FullName);
arrListDocumentName.Add(objFileInfo.Name);
}
}

int intPropCount = 0;
object[] objIndex;

string strSharePath = @"\\wlcomgtd\temp\";
string strFileName = "";
string strValue = "";

for(int i = 0; i < arrListDocumentFullName.Count; i++)
{
strFileName = arrListDocumentFullName[i].ToString();

objDocumentProps = objPropReader.GetDocumentProperties(strFileName);
System.Runtime.InteropServices.Marshal.ReleaseComObject(objPropReader);
objPropReader = null;

intPropCount = objDocumentProps.CustomProperties.Count;
objIndex = new object[intPropCount];
object obj = null;

TableRow row = new TableRow();
TableCell cellName = new TableCell();
cellName.Text = "<a href =" + strSharePath + arrListDocumentName[i].ToString() + ">" + arrListDocumentName[i].ToString() + "</a>";
cellName.RowSpan = 2;
cellName.BackColor = Color.White;
row.Cells.Add(cellName);

for(int a = 1; a < intPropCount+1; a++)
{
obj = a;
objIndex[a-1] = objDocumentProps.CustomProperties[obj].Name;

TableCell cellPropName = new TableCell();
cellPropName.Text = objDocumentProps.CustomProperties[obj].Name;

row.Controls.Add(cellPropName);
}
row.BackColor = Color.LightGray;
myTable.Rows.Add(row);

TableRow row1 = new TableRow();

for(int y = 0; y < intPropCount; y++)
{
// strValue = "Nicht vorhanden";
custProps = objDocumentProps.CustomProperties;
strValue = objDocumentProps.CustomProperties[objIndex[y]].get_Value().ToString();
TableCell cell2 = new TableCell();
cell2.Text = strValue;
row1.Cells.Add(cell2);
}
myTable.Rows.Add(row1);
}

System.Runtime.InteropServices.Marshal.ReleaseComObject(objDocumentProps);
objDocumentProps = null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
catch(System.Runtime.InteropServices.COMException ex)
{
Response.Write(ex.ToString());
}
}
[/CODE]

Und hier die Fehlermeldung wenn ich auf aktualisieren klicke:
System.Runtime.InteropServices.COMException (0x80030020): Freigabeverletzung aufgetreten at DSOleFile.PropertyReaderClass.GetDocumentProperties(String sFileName) at Documentproperties.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\documentproperties\webform1.aspx.cs:line 65

Und zwar lockt der Prozess aspnet_wp.exe die Dokumente. Wenn ich den Prozess beende dann kann ich das Dokument wieder öffnen.

Wie kann ich das nun implementieren dass nachdem die Properties eines Dokumentes ausgelesen wurden das Dokument wieder freigegeben wird?

Hoffe ihr könnt mir helfen.

Danke, Gerald.



Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG