Word 文書をダウンロードしているときにこの問題が発生し続けますが、再度開くと問題なく動作します。
これは私のコードです:
object missing = Missing.Value;
object start1 = 0;
var wordApp = new ApplicationClass();
Microsoft.Office.Interop.Word.Document myDoc = wordApp.Documents.Add(ref missing, ref missing,
ref missing, ref missing);
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
//object fileStream = new FileStream(Server.MapPath("~/Upload/") + fileName,
// FileMode.Create);
object fs = Server.MapPath("~/Upload/") + fileName;
Range rng = myDoc.Range(ref start1, ref missing);
try
{
myDoc.Application.ActiveDocument.SaveAs(ref fs, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing);
wordApp.Visible = true;
//All document information code here
}
catch (Exception)
{
throw;
}
finally
{
myDoc.Save();
myDoc.Close(ref doNotSaveChanges, ref missing, ref missing);
}
// The file name used to save the file to the client's system..
string filename = fs.ToString();
System.IO.Stream stream = null;
try
{
// Open the file into a stream.
stream = new FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read,
System.IO.FileShare.Read);
// Total bytes to read:
long bytesToRead = stream.Length;
Response.ContentType = "application/msword";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
// Read the bytes from the stream in small portions.
while (bytesToRead > 0)
{
// Make sure the client is still connected.
if (Response.IsClientConnected)
{
// Read the data into the buffer and write into the
// output stream.
byte[] buffer = new Byte[10000];
int length = stream.Read(buffer, 0, 10000);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
// We have already read some bytes.. need to read
// only the remaining.
bytesToRead = bytesToRead - length;
}
else
{
// Get out of the loop, if user is not connected anymore..
bytesToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
// An error occurred..
}
finally
{
if (stream != null)
{
stream.Close();
}
}
}