예제 #1
0
        /// <summary>
        /// Writes an OData response for this client request.
        /// </summary>
        /// <param name="status">The HTTP status code for the outgoing response.</param>
        /// <param name="writeAction">Delegate that writes the actual OData response.</param>
        /// <returns>A Stream containing the outgoing response.</returns>
        protected Stream WriteResponse(int status, Action <ODataMessageWriter, ODataMessageWriterSettings, InMemoryTestResponseMessage> writeAction)
        {
            var writerSettings = this.GetDefaultWriterSettings();

            writerSettings.SetContentType(this.incomingAccept, Encoding.UTF8.WebName);

            MemoryStream responseStream  = new NonClosingStream();
            var          responseMessage = new InMemoryTestResponseMessage(responseStream, status);

            using (var messageWriter = new ODataMessageWriter(responseMessage, writerSettings, this.Model))
            {
                try
                {
                    writeAction(messageWriter, writerSettings, responseMessage);
                }
                catch (Exception error)
                {
                    return(this.WriteErrorResponse(500, error));
                }
            }

            responseStream.Seek(0, SeekOrigin.Begin);
            return(responseStream);
        }
예제 #2
0
        /// <summary>
        /// Writes an OData response for this client request.
        /// </summary>
        /// <param name="status">The HTTP status code for the outgoing response.</param>
        /// <param name="writeAction">Delegate that writes the actual OData response.</param>
        /// <returns>A Stream containing the outgoing response.</returns>
        protected Stream WriteResponse(int status, Action<ODataMessageWriter, ODataMessageWriterSettings, InMemoryTestResponseMessage> writeAction)
        {
            var writerSettings = this.GetDefaultWriterSettings();
            writerSettings.SetContentType(this.incomingAccept, Encoding.UTF8.WebName);

            MemoryStream responseStream = new NonClosingStream();
            var responseMessage = new InMemoryTestResponseMessage(responseStream, status);

            using (var messageWriter = new ODataMessageWriter(responseMessage, writerSettings, this.Model))
            {
                try
                {
                    writeAction(messageWriter, writerSettings, responseMessage);
                }
                catch (Exception error)
                {
                    return this.WriteErrorResponse(500, error);
                }
            }

            responseStream.Seek(0, SeekOrigin.Begin);
            return responseStream;
        }