Ошибка. Эта команда недоступна, так как на сервере нет открытых документов.

Я использую этот код для отправки данных в шаблон Word и отправки клиенту.

        protected void Button1_Click(object sender, EventArgs e)
    {
        object missing = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();

        string DocFilePath = "";
        //string FilePath = System.Windows.Forms.Application.StartupPath;
        object fileName = Server.MapPath(@"~\asset\wordtemplates\Estelam.dot");
        DocFilePath = fileName.ToString();

        FileInfo fi = new FileInfo(DocFilePath);
        if (fi.Exists)
        {
            object readOnly = false;
            object isVisible = true;

            object LetterNo = "LetterNo";
            object LetterDate = "LetterDate";
            object Attachment = "Attachment";

            object To = "To";
            object From = "From";

            object Fname = "Fname";
            object Lname = "Lname";
            object FatherName = "FatherName";
            object IDNumber = "IDNumber";
            object BirthDate = "BirthDate";
            object BirthLocation = "BirthLocation";
            object PersonelID = "PersonelID";
            object MembershipDate = "MembershipDate";
            object Membership = "Membership";

            object Degree = "Degree";
            object Level = "Level";
            object Guild = "Guild";
            object Janbazi = "Janbazi";
            object Esarat = "Esarat";
            object Education = "Education";
            object Field = "Field";
            object Education2 = "Education2";
            object DocLocation = "DocLocation";

            Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName, ref missing, ref readOnly,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref isVisible, ref isVisible, ref missing, ref missing, ref missing);

            //Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName);

            WordApp.ActiveDocument.FormFields.get_Item(ref LetterNo).Result = TextBox_LetterNo.Text;

этот код работает хорошо и правильно на местном уровне, но когда я публикую этот сайт и помещаю его на свой сервер, я получаю эту ошибку во время выполнения.

Эта команда недоступна, поскольку ни один документ не открыт. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде. Сведения об исключении: System.Runtime.InteropServices.COMException: эта команда недоступна, поскольку ни один документ не открыт.

Ошибка источника: во время выполнения текущего веб-запроса было создано необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

почему не открывается на сервере? Как решить эту ошибку?

Я использую Windows7, VS2010, SQLServer2008, office2010, а на сервере использую Windows Server 2008, IIS7, office2010.

Что мне делать с этой ошибкой на сервере?


person AmirHossein    schedule 18.04.2012    source источник
comment
Вы не можете использовать автоматизацию Office из серверного приложения, такого как веб-приложение ASP.NET. Продукты Office — это продукты для настольных ПК, и они не работают должным образом, если вообще работают, в среде обслуживания.   -  person John Saunders    schedule 18.04.2012


Ответы (3)


Вам не хватает папки рабочего стола для OfficeAutomation, проверьте здесь

Вам также необходимо настроить учетную запись OfficeAutomationUser (если вы еще этого не сделали) для автоматизации приложений Office, отметьте это

Примечание. Не рекомендуется использовать автоматизацию Office на вашем сервере. Попробуйте использовать Open Xml sdk для автоматизации офисных приложений.

person Kiru    schedule 28.04.2012

Прочтите это слово в asp, и вы увидите пример VB, но я думаю, что вы получите необходимую информацию.

person Likurg    schedule 18.04.2012

вы пытались указать путь к шаблону на сервере в файле конфигурации ?? путь к серверу не является относительным "D://Папка проекта/Папка шаблона". а затем прочитайте путь в приложении, добавив его в файл конфигурации, это облегчит изменение в будущем без повторной публикации вашего сайта.

person Maha Khairy    schedule 18.04.2012