2012-04-30 35 views
0

我在類文件中使用Exec msdb.dbo.sp_send_dbmail使用字符串生成器來附加from和To address.NowI需要附加將在Local解決方案文件夾中的文件(在解決方案中我已創建該文件夾)asp.net提及本地內的路徑名

  strSql.Append("Exec msdb.dbo.sp_send_dbmail @profile_name='SLAToolProfile',");strSql.Append("@recipients='"); 
     strSql.Append(eMailToaddresses); 

     strSql.Append("',@file_attachments='"); 
     string Path = "~/Material/study material.doc"; 
     strSql.Append(Path); 
我用上面的格式我得到的文件連接錯誤。怎麼我提這應該是在本地文件夾中的解決方案中的路徑時

回答

0

您需要使用VirtualPathUtility.ToAbsolute方法:

strSql.Append("Exec msdb.dbo.sp_send_dbmail @profile_name='SLAToolProfile',");strSql.Append("@recipients='"); 
     strSql.Append(eMailToaddresses); 

     strSql.Append("',@file_attachments='"); 
     string Path = VirtualPathUtility.ToAbsolute("~/Material/study material.doc"); 
     strSql.Append(Path); 

應該工作

http://msdn.microsoft.com/en-us/library/ms150160(v=vs.90).aspx

更新

好做多一點挖,原來,當您使用sp_send_dbmail時,附件位置是相對於的位置數據庫服務器不是運行代碼的機器。因此,第一個問題是讓數據庫服務器可訪問該文件位置,即使用文件共享和UNC位置。所以你不能使用~。 Db服務器沒有理解你的路線是什麼......!

+0

我試過但我得到附件文件/SLAEMSite/Material/Material.doc無效。錯誤 – Domnic

+0

我不是那種熟悉這個sp,它需要一個本地路徑的文件,即C:\ docs \ file.doc或虛擬路徑http:\\ www.test.com \ file.doc?我會想象更早? – Liam

0

使用:

string filename = "study material.doc"; 
string storePath = Server.MapPath("~/Material"); 
string finalPath = Path.Combine(storePath,filename); 

Server.MapPath()絕對的應用程序路徑的虛擬路徑轉換;