internal static void ProcessRequest(HttpContext context, ServiceInfo info) { if (context == null) { throw new ArgumentNullException("context"); } if (info == null || info.InvokeInfo == null) { throw new ArgumentNullException("info"); } //if( context.Request.InputStream.Length == 0 ) // throw new InvalidDataException("没有调用数据,请将调用数据以请求体的方式传入。"); if (info.InvokeInfo.AuthenticateRequest(context) == false) { ExceptionHelper.Throw403Exception(context); } // 获取客户端的数据序列化格式。 // 默认实现方式:request.Headers["Serializer-Format"]; // 注意:这是我自定义的请求头名称,也可以不指定,默认为:form (表单) string serializerFormat = FrameworkRules.GetSerializerFormat(context.Request); ISerializerProvider serializerProvider = SerializerProviderFactory.GetSerializerProvider(serializerFormat); if (serializerProvider is IRequireSetServiceInfo) { ((IRequireSetServiceInfo)serializerProvider).SetServiceInfo(info); } // 获取要调用方法的参数类型 Type destType = info.InvokeInfo.MethodAttrInfo.ParamType; // 获取要调用的参数 context.Request.InputStream.Position = 0; // 防止其它Module读取过,但没有归位。 object param = serializerProvider.Deserialize(destType, context.Request); // 调用服务方法 object result = info.InvokeInfo.MethodAttrInfo.MethodInfo.Invoke( info.InvokeInfo.ServiceInstance, new object[] { param }); // 写输出结果 if (result != null) { serializerProvider.Serializer(result, context.Response); } }
public bool Login() { if (!File.Exists(m_userDataPath)) { return(false); } try { m_currentUser.User = m_serializerProvider.Deserialize <Player>(File.ReadAllText(m_userDataPath)); return(true); } catch (Exception e) { m_errorService.LogError(e); File.Delete(m_userDataPath); return(false); } }