ASP.NET C#中发邮件时,为什么明明可以判断到有详细文件,但就是不能做为附件发送

ASP.NET C#中发邮件时,为何明明可以判断到有详细文件,但就是不能做为附件发送!
ASP.NET C#中发邮件时,为何明明可以判断到有详细文件,但就是不能做为附件发送!


        .......
        //3、保存生成的Excel文件。
        //Missing 在System.Reflection命名空间下。
        string savaPath = "~/test_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
        workbook.SaveAs(Server.MapPath(savaPath), Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

        //--发送邮件
        MailMessage objMailMessage;
        MailAttachment objMailAttachment;
        // 创建一个附件对象 
        string npath="";
        npath = @Server.MapPath(savaPath);
        //string npath = '@' + this.Server.MapPath(savaPath).ToString();
        objMailAttachment = new MailAttachment(npath);        //发送邮件的附件    此处总是报错!说邮件附件无效!
        
        // 创建邮件消息 
        objMailMessage = new MailMessage();
...



我F9单步调试时,npath 是一个完整的绝对路径文件(且文件已经生成),但为何在那里就提示邮件附件无效呢?

请哪位大侠指点,谢谢!
------解决方案--------------------
相对路径呢?