履歴書から名前を抽出する次のコードがあります。以下のコードを参照してください。
public void name(string str1)
{
try
{
Microsoft.Office.Interop.Word.ApplicationClass Application = new Microsoft.Office.Interop.Word.ApplicationClass();
object nullobj = System.Reflection.Missing.Value;
string a = Server.MapPath("/resumes/" + fileUpload1.FileName);
fileUpload1.SaveAs(Server.MapPath("/resumes/" + fileUpload1.FileName));
object file = Server.MapPath("/resumes/" + fileUpload1.FileName);
Microsoft.Office.Interop.Word.Document doc = Application.Documents.Open(ref file, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj);
doc.Activate();
string Doc_Content = doc.Content.Text;
string str = Doc_Content;
var words = str.Split(new char[] { ' ', ':', '\r', '\t' });
for (int i = 0; i < words.Length; i++)
{
string val1 = words[i].ToString();
val1 = val1.ToLower();
// string val2 = "";
//if (val1 != "resume")
//{
// //i = i + 1;
// string val3 = words[i].ToString();
// string val4 = "";
// int result = string.Compare(val3, val4, true);
// if (result != 0)
// {
// if (j == 0)
// {
// string val5 = words[i].ToString();
// j++;
// if (words[i + 1].ToString() != "")
// {
// TextBox1.Text = words[i].ToString() + " " + words[i + 1].ToString();
// //txtLastName.Text = words[i + 1].ToString();
// doc.Close(ref nullobj, ref nullobj, ref nullobj);
// return;
// }
// else
// {
// //txtLastName.Text = words[i + 2].ToString();
// doc.Close(ref nullobj, ref nullobj, ref nullobj);
// return;
// }
// }
// }
//}
//start here
if (words[i].ToString().ToLower() == "resume")
{
string val3 = words[i + 1].ToString();
string val4 = words[i + 2].ToString();
TextBox1.Text = val3 + " " + val4; doc.Close(ref nullobj, ref nullobj, ref nullobj);
return;
}
else if (words[i].ToString().ToLower() == "curriculum")
{
if (words[i + 1].ToString().ToLower() == "vitae")
{
string val3 = words[i + 2].ToString();
string val4 = words[i + 3].ToString();
TextBox1.Text = val3 + " " + val4; doc.Close(ref nullobj, ref nullobj, ref nullobj);
return;
}
}
else
{
string val3 = words[i].ToString();
string val4 = words[i + 1].ToString();
TextBox1.Text = val3 + " " + val4; doc.Close(ref nullobj, ref nullobj, ref nullobj);
return;
}
}
//end here
doc.Close(ref nullobj, ref nullobj, ref nullobj);
}
catch (Exception)
{
}
}
上記のコードの問題は、以下のようなエラー メッセージが生成されることです。
別のプロセスで使用されているため、プロセスはファイル 'C:\Users\Roshan\Documents\Visual Studio 2012\Projects\HRMS\HRMS\resumes\Roshan.doc' にアクセスできません。
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.IO.IOException: 別のプロセスで使用されているため、プロセスはファイル 'C:\Users\Roshan\Documents\Visual Studio 2012\Projects\HRMS\HRMS\resumes\Roshan.doc' にアクセスできません。
ソース エラー:
73 行目: { 74 行目: string path = Server.MapPath(Request.ApplicationPath) + "/resumes/" + fileUpload1.FileName; 行 75:
fileUpload1.SaveAs(パス); 76 行目: 77 行目:
fileUpload1.SaveAs(Server.MapPath("~/resumes/" + filename));
現在コメントされている行のコメントを外し、「ここから開始」と「ここで終了」の間のコードにコメントを付けると、コードは正常に機能します。なぜそうなのですか?