using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using SevenZip; using System.Configuration; using System.Threading; using System.Text; using System.IO; using System.Diagnostics; /// ///WebService 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { private static readonly string filePath = ConfigurationManager.AppSettings["Path"]; private static readonly string fileNm = ConfigurationManager.AppSettings["FileNm"]; private string zipFile = "update.zip"; private bool IsCompressionFinished = false; public WebService () { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod( Description="压缩文件")] public string ZipFile() { string path = Server.MapPath("~"); if (IntPtr.Size == 4) { SevenZipCompressor.SetLibraryPath(path + "\\7z.dll"); } else { SevenZipCompressor.SetLibraryPath(path + "\\7z64.dll"); } //SevenZipCompressor.SetLibraryPath(path + "\\7z.dll"); zipFile=Guid.NewGuid().ToString()+".zip"; SevenZipCompressor Compressor = new SevenZipCompressor(); Compressor.CompressionFinished += new EventHandler(cmp_CompressionFinished); Compressor.ArchiveFormat = OutArchiveFormat.Zip; Compressor.CompressionLevel = CompressionLevel.Normal; Compressor.CompressDirectory(filePath, path + "\\" + zipFile); for(int i=0;i<100000;i++) { if (IsCompressionFinished) { break; } Thread.Sleep(100); } string URL = GetRootPath() + "/" + zipFile; return URL; } [WebMethod(Description = "删除已下载文件")] public void deleteFile(string url) { string[] spliter={"/"}; url = url.Split(spliter, StringSplitOptions.RemoveEmptyEntries).Last(); string filePath = Server.MapPath(url); File.Delete(filePath); } [WebMethod(Description = "获取文件版本号")] public string getFileVersion() { FileVersionInfo VersionInfo = FileVersionInfo.GetVersionInfo(filePath + "\\" + fileNm); return VersionInfo.FileVersion; } private void cmp_CompressionFinished(object sender, EventArgs e) { IsCompressionFinished = true; } public string GetRootPath() { string absolutePath = HttpContext.Current.Request.Url.AbsoluteUri; string hostNameAndPort = HttpContext.Current.Request.Url.Authority; string applicationDir = HttpContext.Current.Request.ApplicationPath; StringBuilder sbRequestUrl = new StringBuilder(); sbRequestUrl.Append(absolutePath.Substring(0, absolutePath.IndexOf(hostNameAndPort))); sbRequestUrl.Append(hostNameAndPort); if (applicationDir != "/") { sbRequestUrl.Append(applicationDir); } return sbRequestUrl.ToString(); } }