Leider gibt es für diesen "Bug" nach wie vor keinen Hotfix - ganz im Gegenteil - Microsoft hat nun schon das zweite mal ein Cumulative Update für Office 2010 released welches diesen Fehler hervorruft. Schön langsam stellt sich hier der Eindruck als sei dies eine bewusste Änderung an den Sicherheitsprüfungen der MailItem.SaveAs() Funtkion. Aber es gibt auch gute Nachrichten zu diesem Thema - es gibt einen Workaround - und zwar einen der nicht gerade sauber, dafür aber wohl für die Zukunft stabil laufen sollte.

Im Detail tritt der genannte Fehler nur dann auf wenn man versucht mit dieser Methode den Inhalt direkt auf ein WebDav/WebClient-Ziel zu speichern. Verwendet man die Methode stattdessen um direkt ins Filesystem zu speichern funktioniert sie wunderbar - so als wäre nie etwas gewesen.

Problem (führt zu dem Fehler):

MailItem mi = item as MailItem;
mi.SaveAs("http://sp2010/doclib/emails/Message.msg", OlSaveAsType.olMSG);

Workaround (umgeht den Fehler):

MailItem mi = item as MailItem;
mi.SaveAs("C:\\Temp\\Message.msg", OlSaveAsType.olMSG);

WebRequest request = WebRequest.Create("http://sp2010/doclib/emails/Message.msg");
request.Method = "PUT";
byte[] buffer = new byte[1024];

using (Stream stream = request.GetRequestStream())
 using (MemoryStream ms = new MemoryStream(GetBytesFromFile("C:\\Temp\Message.msg")))
  for (int i = ms.Read(buffer, 0, buffer.Length); i > 0; i = ms.Read(buffer, 0, buffer.Length))
    stream.Write(buffer, 0, i);

WebResponse response = request.GetResponse();
response.Close();

public static byte[] GetBytesFromFile(string fullFilePath)
{
 FileStream fs = File.OpenRead(fullFilePath);

  try
  {
   byte[] bytes = new byte[fs.Length];
  fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
    fs.Close();
    return bytes;
 }
  finally
  {
   fs.Close();
  }
}

Konklusio:

Naturlich kann man vermutlich den Code noch etwas sauberer und vorallem gekapselter abbilden - im Endeffekt beschreibt er aber einen möglichen Weg zur Umgehung des Problems. Es muss hier jeder für sich selbst entscheiden - ob dieser Weg wirklich vertretbar für einen ist - denn immerhin werden lokale temporäre Daten abgelegt - welche auch wieder gelöscht werden müssten. Unsauber ist es allemal - aber der Kunde ist König - und wenn die Lösung ihn glücklich macht - wird es so gemacht ;)

Betroffene Office 2010 Updates:

Office 2010 Security and Non-Security Updates November 2012 http://support.microsoft.com/kb/2781266
Office 2010 Security and Non-Security Updates Dezember 2012 http://support.microsoft.com/kb/2793009
Office 2010 Cumulative Update Dezember 2012 http://support.microsoft.com/kb/2789671
Office 2010 Security and Non-Security Updates Januar 2013 http://support.microsoft.com/kb/2798063
Office 2010 Non-Security Updates Februar 2013 http://support.microsoft.com/kb/2810076
Office 2010 Cumulative Update Februar 2013 http://support.microsoft.com/kb/2800779
Office 2010 Security and Non-Security Updates März 2013 http://support.microsoft.com/kb/2824877
Office 2010 Security and Non-Security Updates April 2013 http://support.microsoft.com/kb/2833132
Office 2010 Cumulative Update April 2013 http://support.microsoft.com/kb/2832226

Wie man sehen kann sind bis jetzt alle Updates ab dem ominösen KB2781266 betroffen (auch wenn man dieses auslässt) - wenn jemand hier andere detailliertere Informationen hat - immer her damit - vielleicht schafft es Microsoft ja auch mal etwas zu reparieren (das sie selbst kaputt Hotfixen) - und nicht immer nur ein "No-Go" vom Produktteam weiterzuleiten.

Over and Out

Noch kein Feedback


Formular wird geladen...

Suche

Kalender

März 2024
Mo Di Mi Do Fr Sa So
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 << <   > >>

  XML-Feeds

Website engine