/// <summary> /// 调用 /// </summary> /// <param name="arg"></param> /// <returns></returns> private static void CallTask(object arg) { HttpContext context = (HttpContext)arg; var router = new Router(context); //跨域支持 if (router.Data.HttpMethod == "OPTIONS") { HttpProtocol.Cros(context.Response); return; } IoHandler.OnBegin(router.Data); try { if (router.Data.Uri.LocalPath == "/publish") { bool suc = ZeroPublisher.Publish(context.Request.Form["Host"], context.Request.Form["Title"], context.Request.Form["Sub"], (string)context.Request.Form["Arg"]); context.Response.WriteAsync(suc ? ApiResult.SucceesJson : ApiResult.NetworkErrorJson, Encoding.UTF8); return; } //内容页转向 if (router.Data.Uri.LocalPath.IndexOf(".", StringComparison.OrdinalIgnoreCase) > 0) { context.Response.Redirect(RouteOption.Option.SystemConfig.ContextHost + router.Data.Uri.LocalPath.Trim('/')); return; } //内容页转向 if (router.Data.Uri.LocalPath.IndexOf(".", StringComparison.OrdinalIgnoreCase) > 0) { context.Response.Redirect(RouteOption.Option.SystemConfig.ContextHost + router.Data.Uri.LocalPath.Trim('/')); return; } HttpProtocol.FormatResponse(context.Response); //命令 if (InnerCommand(router.Data.Uri.LocalPath, context.Response)) { return; } //开始调用 if (!router.SecurityChecker.PreCheck()) { router.Data.Status = ZeroOperatorStatus.DenyAccess; context.Response.WriteAsync(ApiResult.DenyAccessJson, Encoding.UTF8); } else { // 正常调用 router.Call(); // 写入返回 router.WriteResult(); // 缓存 RouteChahe.CacheResult(router.Data); } } catch (Exception e) { OnError(router, e, context); } finally { IoHandler.OnEnd(router.Data); } }