using Mozi.HttpEmbedded.Page; using System; using System.Threading; using System.Threading.Tasks; using Mozi.HttpEmbedded.Common; using Mozi.StateService; using System.Reflection; namespace Mozi.HttpEmbedded.Test { public delegate void TaskExceptionThrowing(object sender, Exception ex); static class Program { /// /// 应用程序的主入口点。 /// static void Main(string[] args) { string pathStatic = ""; //AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; HttpServer hs = new HttpServer(); //启用HTTPS //hs.UseHttps().LoadCert(AppDomain.CurrentDomain.BaseDirectory + @"Cert\ServerCert.pfx", "12345678"); //配置端口并启动服务器 hs.SetPort(8080).Start(); //开启认证 //hs.UseAuth(AuthorizationType.Basic).SetUser("admin", "admin"); //开启静态文件支持 hs.UseStaticFiles(pathStatic); hs.SetVirtualDirectory("Config", "Config"); //开启文件压缩 hs.UseGzip(new Compress.CompressOption() { MinContentLength=1024, CompressLevel=2 }); //程序集注入 //1,此方法会扫描程序集内继承自BaseApi或属性标记为[BasicApi]的类 //2,Http通讯数据标准默认为xml,使用Router.Default.SetDataSerializer(ISerializer ser)更改序列化类型 //Router.Default.Register("./test.dll"); //路由映射 Router router = Router.Default; router.Register(Assembly.GetExecutingAssembly()); router.Map("services/{controller}/{action}"); //开启WebDAV //hs.UseWebDav("{path}"); ////开启状态服务 HeartBeatService state = new HeartBeatService() { Port = 13453, RemoteHost = "100.100.0.111" }; state.ApplyDevice("Mozi", "80018001", "1.2.3"); state.SetState(ClientLifeState.Alive); state.SetUserName("StateService"); state.Init(); state.Activate(); Console.ReadLine(); //路径信息 // 首页 // @ip 服务器地址,本机调试使用127.0.0.1 // @port 服务器端口 // http://{ip}:{port} // 静态文件 // @ip 服务器地址,本机调试使用127.0.0.1 // @port 服务器端口 // @path 路径名,为静态目录的子级目录名 // @filename 文件名 // http://{ip}:{port}/{path}/{filename} // API // @ip 服务器地址,本机调试使用127.0.0.1 // @port 服务器端口 // @controller 注册的类名,暂不支持改名 // @action 方法名 // http://{ip}:{port}/{controller}/{action} //内置API 请参看Runtime.cs文件 } /// /// Task异常 /// /// /// static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { e.SetObserved(); //DONE 对异常进行更详细的记录 Log.Save("error", "[TASK]" + e.Exception.Message + Environment.NewLine + (e.Exception.StackTrace ?? "")); } static void Application_ThreadExit(object sender, EventArgs e) { Log.Save("error", "程序退出"); } /// /// 跨线程调用异常处理 /// /// /// static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Log.Save("error", e.ExceptionObject.ToString()); } /// /// 主线程未处理异常 /// /// /// static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { //DONE 对异常进行更详细的记录 Log.Save("error", e.Exception.Message + Environment.NewLine + (e.Exception.StackTrace ?? "")); } } }