示例#1
0
        /// <summary>
        /// Handle current X-Road operation.
        /// </summary>
        protected override void HandleRequest(XRoadContextClassic context)
        {
            if (context.HttpContext.Request.InputStream.Length == 0)
            {
                throw XRoadException.InvalidQuery("Empty request content");
            }

            context.Request.LoadRequest(context.HttpContext, StoragePath.GetValueOrDefault(Path.GetTempPath()), supportedProtocols);
            if (context.Request.Protocol == null && context.Request.MetaServiceMap == null)
            {
                var supportedProtocolsString = string.Join(", ", supportedProtocols.Select(x => $@"""{x.Name}"""));
                throw XRoadException.InvalidQuery($"Could not detect X-Road message protocol version from request message. Adapter supports following protocol versions: {supportedProtocolsString}.");
            }

            context.Response.Copy(context.Request);
            context.ServiceMap = context.Request.MetaServiceMap;

            OnRequestLoaded(context);
            InvokeServiceMethod(context);
            SerializeXRoadResponse(context);
        }