HRESULT: 0x800A03EC - Il fonctionne sur ma machine de problème lors de la création de fichiers Excel

Je suis entrain de créer un document excel à l'aide de données provenant de mssql server dans mon asp.net application. Voici ma méthode:

[WebMethod]
public static string ExportToExcel(string sourcetype)
{
Microsoft.Office.Interop.Excel.Application oXL;
Microsoft.Office.Interop.Excel._Workbook oWB;
Microsoft.Office.Interop.Excel._Worksheet oSheet;
Microsoft.Office.Interop.Excel.Range oRng;
try
{
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = false;
oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
List<ExcelReport> dataToExport = APIClient.GetExcelReportData(Utility.getCurrentFilterId(), sourcetype);
oSheet.Cells[1, 1] = "Source";
oSheet.Cells[1, 2] = "UserName";
oSheet.Cells[1, 3] = "Name";
oSheet.Cells[1, 4] = "Message";
oSheet.Cells[1, 5] = "Title";
//oSheet.Cells[1, 6] = "Date";
int activeRow = 2;
for (int i = 0; i < dataToExport.Count; i++)
{
oSheet.Cells[activeRow, 1] = dataToExport[i].Source;
oSheet.Cells[activeRow, 2] = dataToExport[i].UserName;
oSheet.Cells[activeRow, 3] = dataToExport[i].Name;
oSheet.Cells[activeRow, 4] = dataToExport[i].Message;
oSheet.Cells[activeRow, 5] = dataToExport[i].MessageTitle;
//oSheet.Cells[activeRow, 6] = dataToExport[i].EntityDate;
activeRow++;
}
oSheet.get_Range("A1", "Z1").Font.Bold = true;
oSheet.get_Range("A1", "Z1").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
oRng = oSheet.get_Range("A1", "Z1");
oRng.EntireColumn.AutoFit();
oXL.Visible = false;
oXL.UserControl = false;
string strFile = "report" + System.DateTime.Now.Ticks.ToString() + ".xls";
string strCurrentDir = HttpContext.Current.Server.MapPath(".") + "\\ExcelReports\\";
oWB.SaveAs(strCurrentDir + strFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false,
false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);
//oWB.SaveCopyAs(strCurrentDir + strFile);
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
oSheet = null;
oWB = null;
oXL = null;
GC.Collect();  //force final cleanup!
//errLabel.Text = "<A href=http://" + strMachineName + "/ExcelGen/" + strFile + ">Download Report</a>";
//string result = "<a href=\"~/ExcelReports/" + strFile + ">Raporu İndir</a>";
string result = "ExcelReports/" + strFile;
return result;
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
return errorMessage;
}
}

Il fonctionne très bien sur ma machine et le serveur d'application publié quand j'ai ouvert le code source dans vs 2010 et appuyez sur la touche F5. Mais si j'essaie d'accéder à mon application en utilisant le navigateur via IIS, je suis de HRESULT: 0x800A03EC erreur.

J'ai essayé la commande suivante:

appcmd set config -section:asp -enableParentPaths:true

J'ai essayé de donner des autorisations d'écriture pour mon dossier.

J'ai essayé de changer mon MS Excel paramètres de l'application de Services de Composants.

Mais pas moyen! Je ne pourrais pas obtenir de travail. Avez-vous une idée? Suis-je en train de faire une erreur dans la configuration?

Merci d'avance,

Je pense que vous devriez passer du Système.Manquant.La valeur plutôt que sur les valeurs null lors de l'appel de l'interopérabilité
Puisque vous n'avez pas mentionné 0x800A03EC == ERROR_INVALID_FLAGS. Mais vous ne devriez pas être automatisation d'Excel à partir de IIS c'est ce n'est pas officiellement pris en charge depuis Excel suppose qu'il a un bureau interactif. Il y a beaucoup de XLS/XLSX bibliothèques de génération vous pouvez utiliser à la place.

OriginalL'auteur anilca | 2011-03-16