PDA

View Full Version : سوال: تنظیمات IIS



parnian man
یک شنبه 15 بهمن 1391, 19:34 عصر
سلام
من یه پروژه وب با asp.net و C#‎ نوشتم
در یه قسمت از پروژه لینکی وجود داره که با کلیک روی این لینک اطلاعات از sql خونده میشه و داخل template از فایل docx قرار میگیره ، برای این کار هم از اسمبلی مایکروسافت microsoft.office.interop.word استفاده کردم .
این برنامه ، لوکال و با استفاده از vs که اجرا میشه هیچ مشکلی نداره . ولی وقتی روی همون سیستم ست آپ می سازم و روی IIS میزارم ، لینک مورد نظر رو که کلیک می کنم هیچ اتفاقی نمی افته و خبری از فایل docx نیست.

تنظیمات application pool در IIS هم net4 و 32bitappهم true و identity هم روی local system هست
کد هم اینه:
Object oMissing = System.Reflection.Missing.Value;

Object oTrue = true;
Object oFalse = false;

Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();


oWord.Visible = true;

try
{
Object oTemplatePath = Server.MapPath("\\shenasname.dotx");

oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);

foreach (Word.Field myMergeField in oWordDoc.Fields)
{

Word.Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;

if (fieldText.StartsWith(" MERGEFIELD"))
{

Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);

fieldName = fieldName.Trim();
if (fieldName == "ComputerName")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[1].Text);
}

if (fieldName == "IP")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[2].Text);
}

if (fieldName == "PrizNum")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[23].Text);
}

if (fieldName == "SwitchNum")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[24].Text);
}

if (fieldName == "PatchNum")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[25].Text);
}

if (fieldName == "MouseNum")
{
myMergeField.Select();
oWord.Selection.TypeText(" ");
}

if (fieldName == "SpeakerNum")
{
myMergeField.Select();
oWord.Selection.TypeText(" ");
}

if (fieldName == "KeyboardNum")
{
myMergeField.Select();
oWord.Selection.TypeText(" ");
}

if (fieldName == "MonitorNum")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[27].Text);
}

if (fieldName == "CaseNum")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[26].Text);
}


string mainuser = null;
string user = null;
for (int i = 0; i < grdpeigiri.Rows.Count; i++)
{
if (grdpeigiri.Rows[i].Cells[5].Text.Contains("*"))
{
mainuser = grdpeigiri.Rows[i].Cells[4].Text;
}
else
{
if (user == null)
{
user = user + grdpeigiri.Rows[i].Cells[4].Text;
}
else
{
user = user + " - " + grdpeigiri.Rows[i].Cells[4].Text;
}
}
}
if (user == null) user = "-";
if (fieldName == "Section")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[7].Text);
}

if (fieldName == "MainUser")
{
myMergeField.Select();
oWord.Selection.TypeText(mainuser);
}

if (fieldName == "OtherUser")
{
myMergeField.Select();
oWord.Selection.TypeText(user);
}

if (fieldName == "MainBoard")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[18].Text);
}

if (fieldName == "CPU")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[10].Text);
}

if (fieldName == "RAM")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[11].Text);
}

if (fieldName == "HDD")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[13].Text);
}

if (fieldName == "VGA")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[12].Text);
}

if (fieldName == "Sound")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[20].Text);
}

if (fieldName == "Lan")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[19].Text);
}

if (fieldName == "Case")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[8].Text);
}

if (fieldName == "Monitor")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[9].Text);
}

if (fieldName == "ODD")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[21].Text);
}

if (fieldName == "Scanner")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[15].Text);
}

if (fieldName == "Speaker")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[16].Text);
}

if (fieldName == "Modem")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[22].Text);
}

if (fieldName == "UPS")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[17].Text);
}

if (fieldName == "Printer")
{
myMergeField.Select();
oWord.Selection.TypeText(grdpeigiri.Rows[RowIndex].Cells[14].Text);
}
}
}
}
catch
{

}
}


مدت زیادی که دنبال راه حل می گردم ولی جوابی نگرفتم !!!!!!!!!!!!!!!!!!!
خواهشا کمک کنید حل بشه
ممنون میشم

mohsen musavi
دوشنبه 16 بهمن 1391, 15:47 عصر
یه پروژه تست از پروژه اصلیت درست کن و اینجا بزار تا دانلود کنیم ببینیم مشکلت از چیه.
عموما کار با microsoft.office.interop بیشتر به دسترسی ها برمیگرده.همچنین در هنگام بارگذاری بر روی Windows Server هم تنظیمات دیگری باید انجام بدی.
در نظر داشته باش بعد از اتمام کارت آبجکت مربوط به Interop را Dispose کنی.

parnian man
سه شنبه 01 اسفند 1391, 12:58 عصر
سلام
من هنوز موفق نشدم این مشکل و بر طرف کنم؟
پروژه تست و چطور باید بسازم ؟ تا حالا این کار و نکردم!!!!!!:خجالت:
چه تنظیماتی روی سرور باید انجام بشه؟