本文整理汇总了C#中IODataResponseMessage类的典型用法代码示例。如果您正苦于以下问题:C# IODataResponseMessage类的具体用法?C# IODataResponseMessage怎么用?C# IODataResponseMessage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IODataResponseMessage类属于命名空间,在下文中一共展示了IODataResponseMessage类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Process
public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
{
string asyncToken = this.QueryContext.AsyncToken;
AsyncTask asyncTask = AsyncTask.GetTask(asyncToken);
if (asyncTask == null)
{
// token is invalid or expired.
throw Utility.BuildException(HttpStatusCode.NotFound);
}
else
{
if (!asyncTask.Ready)
{
ResponseWriter.WriteAsyncPendingResponse(responseMessage, asyncToken);
}
else
{
responseMessage.SetHeader(ServiceConstants.HttpHeaders.ContentType, "application/http");
responseMessage.SetHeader(ServiceConstants.HttpHeaders.ContentTransferEncoding, ServiceConstants.HttpHeaderValues.Binary);
using (var messageWriter = this.CreateMessageWriter(responseMessage))
{
var asyncWriter = messageWriter.CreateODataAsynchronousWriter();
var innerResponse = asyncWriter.CreateResponseMessage();
asyncTask.Execute(innerResponse);
}
}
}
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:29,代码来源:StatusMonitorRequestHandler.cs
示例2: DetectPayloadKind
internal override IEnumerable<ODataPayloadKind> DetectPayloadKind(IODataResponseMessage responseMessage, ODataPayloadKindDetectionInfo detectionInfo)
{
ExceptionUtils.CheckArgumentNotNull<IODataResponseMessage>(responseMessage, "responseMessage");
ExceptionUtils.CheckArgumentNotNull<ODataPayloadKindDetectionInfo>(detectionInfo, "detectionInfo");
Stream messageStream = ((ODataMessage) responseMessage).GetStream();
return this.DetectPayloadKindImplementation(messageStream, true, true, detectionInfo);
}
开发者ID:nickchal,项目名称:pash,代码行数:7,代码来源:ODataAtomFormat.cs
示例3: ParseSingleEntityPayload
internal static MaterializerEntry ParseSingleEntityPayload(IODataResponseMessage message, ResponseInfo responseInfo, Type expectedType)
{
ODataPayloadKind payloadKind = ODataPayloadKind.Entry;
using (ODataMessageReader reader = ODataMaterializer.CreateODataMessageReader(message, responseInfo, false, ref payloadKind))
{
IEdmType orCreateEdmType = ClientEdmModel.GetModel(responseInfo.MaxProtocolVersion).GetOrCreateEdmType(expectedType);
ODataReader reader2 = ODataMaterializer.CreateODataReader(reader, payloadKind, orCreateEdmType, responseInfo.MaxProtocolVersion);
ODataFeedOrEntryReader reader3 = new ODataFeedOrEntryReader(reader2, responseInfo);
ODataEntry currentEntry = null;
bool flag = false;
while (reader3.Read())
{
flag |= reader3.CurrentFeed != null;
if (reader3.CurrentEntry != null)
{
if (currentEntry != null)
{
throw new InvalidOperationException(System.Data.Services.Client.Strings.AtomParser_SingleEntry_MultipleFound);
}
currentEntry = reader3.CurrentEntry;
}
}
if (currentEntry == null)
{
if (flag)
{
throw new InvalidOperationException(System.Data.Services.Client.Strings.AtomParser_SingleEntry_NoneFound);
}
throw new InvalidOperationException(System.Data.Services.Client.Strings.AtomParser_SingleEntry_ExpectedFeedOrEntry);
}
return MaterializerEntry.GetEntry(currentEntry);
}
}
开发者ID:nickchal,项目名称:pash,代码行数:33,代码来源:ODataReaderEntityMaterializer.cs
示例4: ODataResponseMessage
/// <summary>
/// Constructs an internal wrapper around the <paramref name="responseMessage"/>
/// that isolates the internal implementation of the ODataLib from the interface.
/// </summary>
/// <param name="responseMessage">The response message to wrap.</param>
internal ODataResponseMessage(IODataResponseMessage responseMessage)
{
DebugUtils.CheckNoExternalCallers();
Debug.Assert(responseMessage != null, "responseMessage != null");
this.responseMessage = responseMessage;
}
开发者ID:rambo-returns,项目名称:MonoRail,代码行数:12,代码来源:ODataResponseMessage.cs
示例5: ProcessUpdateEntityReference
private void ProcessUpdateEntityReference(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage, ODataPath odataPath)
{
// This is for change the reference in single-valued navigation property
// PUT ~/Person(0)/Parent/$ref
// {
// "@odata.context": "http://host/service/$metadata#$ref",
// "@odata.id": "Orders(10643)"
// }
if (this.HttpMethod == HttpMethod.PATCH)
{
throw Utility.BuildException(HttpStatusCode.MethodNotAllowed, "PATCH on a reference link is not supported.", null);
}
// Get the parent first
var level = this.QueryContext.QueryPath.Count - 2;
var parent = this.QueryContext.ResolveQuery(this.DataSource, level);
var navigationPropertyName = ((NavigationPropertyLinkSegment)odataPath.LastSegment).NavigationProperty.Name;
using (var messageReader = new ODataMessageReader(requestMessage, this.GetReaderSettings(), this.DataSource.Model))
{
var referenceLink = messageReader.ReadEntityReferenceLink();
var queryContext = new QueryContext(this.ServiceRootUri, referenceLink.Url, this.DataSource.Model);
var target = queryContext.ResolveQuery(this.DataSource);
this.DataSource.UpdateProvider.UpdateLink(parent, navigationPropertyName, target);
this.DataSource.UpdateProvider.SaveChanges();
}
ResponseWriter.WriteEmptyResponse(responseMessage);
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:32,代码来源:UpdateHandler.cs
示例6: ODataFeedGenerator
/// <summary>
/// Create a new feed generator
/// </summary>
/// <param name="requestMessage">The OData request message that was received</param>
/// <param name="responseMessage">The OData response message to be populated by the generator</param>
/// <param name="entityMap">The map to use to map RDF URIs to OData types and properties</param>
/// <param name="baseUri">The base URI for the OData feed</param>
/// <param name="messageWriterSettings">Additional settings to apply to the generated OData output</param>
public ODataFeedGenerator(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage, SparqlMap entityMap, string baseUri, ODataMessageWriterSettings messageWriterSettings)
{
_request = requestMessage;
_response = responseMessage;
_map = entityMap;
_baseUri = baseUri;
_writerSettings = messageWriterSettings;
}
开发者ID:smasonuk,项目名称:odata-sparql,代码行数:16,代码来源:ODataFeedGenerator.cs
示例7: CreateReader
/// <summary>
/// Creates a new the reader for the given response message and settings.
/// </summary>
/// <param name="responseMessage">The response message.</param>
/// <param name="settings">The settings.</param>
/// <returns>Newly created message reader.</returns>
internal ODataMessageReader CreateReader(IODataResponseMessage responseMessage, ODataMessageReaderSettings settings)
{
Debug.Assert(responseMessage != null, "responseMessage != null");
Debug.Assert(settings != null, "settings != null");
this.responseInfo.Context.Format.ValidateCanReadResponseFormat(responseMessage);
return new ODataMessageReader(responseMessage, settings, this.responseInfo.TypeResolver.ReaderModel);
}
开发者ID:rossjempson,项目名称:odata.net,代码行数:14,代码来源:ODataMessageReadingHelper.cs
示例8: Process
public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
{
responseMessage.SetStatusCode(HttpStatusCode.OK);
using (var writer = this.CreateMessageWriter(responseMessage))
{
writer.WriteServiceDocument(this.GenerateServiceDocument());
}
}
开发者ID:chinadragon0515,项目名称:ODataSamples,代码行数:8,代码来源:ServiceDocumentHandler.cs
示例9: HeaderCollection
/// <summary>
/// Initializes a new instance of <see cref="HeaderCollection"/>.
/// </summary>
/// <param name="responseMessage">The response message to pull the headers from.</param>
internal HeaderCollection(IODataResponseMessage responseMessage)
: this()
{
if (responseMessage != null)
{
this.SetHeaders(responseMessage.Headers);
}
}
开发者ID:AlineGuan,项目名称:odata.net,代码行数:12,代码来源:HeaderCollection.cs
示例10: ODataResponseMessage
/// <summary>
/// Constructs an internal wrapper around the <paramref name="responseMessage"/>
/// that isolates the internal implementation of the ODataLib from the interface.
/// </summary>
/// <param name="responseMessage">The response message to wrap.</param>
/// <param name="writing">true if the message is being written; false when it is read.</param>
/// <param name="disableMessageStreamDisposal">true if the stream returned should ignore dispose calls.</param>
/// <param name="maxMessageSize">The maximum size of the message in bytes (or a negative number if no maximum applies).</param>
internal ODataResponseMessage(IODataResponseMessage responseMessage, bool writing, bool disableMessageStreamDisposal, long maxMessageSize)
: base(writing, disableMessageStreamDisposal, maxMessageSize)
{
DebugUtils.CheckNoExternalCallers();
Debug.Assert(responseMessage != null, "responseMessage != null");
this.responseMessage = responseMessage;
}
开发者ID:smasonuk,项目名称:odata-sparql,代码行数:16,代码来源:ODataResponseMessage.cs
示例11: ResponseBodyWriter
internal ResponseBodyWriter(bool hasMoved, IDataService service, IEnumerator queryResults, RequestDescription requestDescription, IODataResponseMessage responseMessage, ODataPayloadKind payloadKind)
{
this.hasMoved = hasMoved;
this.service = service;
this.queryResults = queryResults;
this.requestDescription = requestDescription;
this.responseMessage = responseMessage;
this.payloadKind = payloadKind;
this.encoding = HttpProcessUtility.EncodingFromAcceptCharset(this.service.OperationContext.Host.RequestAcceptCharSet);
if ((((payloadKind == ODataPayloadKind.Entry) || (payloadKind == ODataPayloadKind.Feed)) || ((payloadKind == ODataPayloadKind.Property) || (payloadKind == ODataPayloadKind.Collection))) || (((payloadKind == ODataPayloadKind.EntityReferenceLink) || (payloadKind == ODataPayloadKind.EntityReferenceLinks)) || (((payloadKind == ODataPayloadKind.Error) || (payloadKind == ODataPayloadKind.ServiceDocument)) || (payloadKind == ODataPayloadKind.Parameter))))
{
DataServiceHostWrapper host = service.OperationContext.Host;
if (WebUtil.GetEffectiveMaxResponseVersion(service.Configuration.DataServiceBehavior.MaxProtocolVersion, host.RequestMaxVersion) > RequestDescription.Version2Dot0)
{
bool isEntityOrFeed = (payloadKind == ODataPayloadKind.Entry) || (payloadKind == ODataPayloadKind.Feed);
if (WebUtil.ResponseMediaTypeWouldBeJsonLight(host.RequestAccept, isEntityOrFeed))
{
requestDescription.VerifyAndRaiseResponseVersion(RequestDescription.Version3Dot0, service);
host.ResponseVersion = RequestDescription.Version3Dot0.ToString() + ";";
}
}
}
if (this.requestDescription.TargetKind == RequestTargetKind.MediaResource)
{
this.mediaResourceStream = service.StreamProvider.GetReadStream(this.queryResults.Current, RequestDescription.GetStreamProperty(this.requestDescription), this.service.OperationContext);
}
else if (payloadKind != ODataPayloadKind.BinaryValue)
{
string requestAcceptCharSet = this.service.OperationContext.Host.RequestAcceptCharSet;
if (string.IsNullOrEmpty(requestAcceptCharSet) || (requestAcceptCharSet == "*"))
{
requestAcceptCharSet = "UTF-8";
}
if ((payloadKind == ODataPayloadKind.Value) && !string.IsNullOrEmpty(this.requestDescription.MimeType))
{
this.messageWriter = CreateMessageWriter(this.AbsoluteServiceUri, this.service, this.requestDescription.ActualResponseVersion, responseMessage, ODataFormat.RawValue);
}
else
{
this.messageWriter = CreateMessageWriter(this.AbsoluteServiceUri, this.service, this.requestDescription.ActualResponseVersion, responseMessage, this.service.OperationContext.Host.RequestAccept, requestAcceptCharSet);
}
try
{
this.contentFormat = ODataUtils.SetHeadersForPayload(this.messageWriter, payloadKind);
if ((payloadKind == ODataPayloadKind.Value) && !string.IsNullOrEmpty(this.requestDescription.MimeType))
{
responseMessage.SetHeader("Content-Type", this.requestDescription.MimeType);
}
}
catch (ODataContentTypeException exception)
{
throw new DataServiceException(0x19f, null, System.Data.Services.Strings.DataServiceException_UnsupportedMediaType, null, exception);
}
string headerValue = this.requestDescription.ResponseVersion.ToString() + ";";
responseMessage.SetHeader("DataServiceVersion", headerValue);
}
}
开发者ID:nickchal,项目名称:pash,代码行数:57,代码来源:ResponseBodyWriter.cs
示例12: Process
public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
{
if (this.TryDispatch(requestMessage, responseMessage))
{
return;
}
if (this.QueryContext.Target.TypeKind != EdmTypeKind.Collection)
{
throw Utility.BuildException(HttpStatusCode.BadRequest, "The new resource can only be created under collection resource.", null);
}
if (this.QueryContext.Target.IsReference)
{
this.ProcessCreateLink(requestMessage, responseMessage);
return;
}
try
{
var targetEntitySet = (IEdmEntitySetBase)this.QueryContext.Target.NavigationSource;
// TODO: [lianw] Try to remove "targetEntitySet" later.
var queryResults = this.QueryContext.ResolveQuery(this.DataSource);
if (!IsAllowInsert(targetEntitySet as IEdmEntitySet))
{
throw new ODataServiceException(HttpStatusCode.BadRequest, "The insert request is not allowed.", null);
}
var bodyObject = ProcessPostBody(requestMessage, targetEntitySet, queryResults);
using (var messageWriter = this.CreateMessageWriter(responseMessage))
{
this.DataSource.UpdateProvider.SaveChanges();
// 11.4.2 Create an Entity
// Upon successful completion the service MUST respond with either 201 Created, or 204 No Content if the request included a return Prefer header with a value of return=minimal.
responseMessage.SetStatusCode(HttpStatusCode.Created);
responseMessage.SetHeader(ServiceConstants.HttpHeaders.Location, Utility.BuildLocationUri(this.QueryContext, bodyObject).OriginalString);
var currentETag = Utility.GetETagValue(bodyObject);
// if the current entity has ETag field
if (currentETag != null)
{
responseMessage.SetHeader(ServiceConstants.HttpHeaders.ETag, currentETag);
}
ResponseWriter.WriteEntry(messageWriter.CreateODataEntryWriter(targetEntitySet), bodyObject, targetEntitySet, ODataVersion.V4, null);
}
}
catch
{
this.DataSource.UpdateProvider.ClearChanges();
throw;
}
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:56,代码来源:CreateHandler.cs
示例13: DetectPayloadKind
/// <summary>
/// Detects the payload kinds supported by this format for the specified message payload.
/// </summary>
/// <param name="responseMessage">The response message with the payload stream.</param>
/// <param name="detectionInfo">Additional information available for the payload kind detection.</param>
/// <returns>The set of <see cref="ODataPayloadKind"/>s that are supported with the specified payload.</returns>
internal override IEnumerable<ODataPayloadKind> DetectPayloadKind(
IODataResponseMessage responseMessage,
ODataPayloadKindDetectionInfo detectionInfo)
{
DebugUtils.CheckNoExternalCallers();
ExceptionUtils.CheckArgumentNotNull(responseMessage, "responseMessage");
ExceptionUtils.CheckArgumentNotNull(detectionInfo, "detectionInfo");
return DetectPayloadKindImplementation(detectionInfo.ContentType);
}
开发者ID:smasonuk,项目名称:odata-sparql,代码行数:16,代码来源:ODataRawValueFormat.cs
示例14: MaterializeAtom
internal MaterializeAtom(ResponseInfo responseInfo, QueryComponents queryComponents, ProjectionPlan plan, IODataResponseMessage responseMessage, ODataPayloadKind payloadKind)
{
Type type;
this.responseInfo = responseInfo;
this.elementType = queryComponents.LastSegmentType;
this.MergeOptionValue = responseInfo.MergeOption;
this.expectingPrimitiveValue = PrimitiveType.IsKnownNullableType(this.elementType);
Type materializerType = GetTypeForMaterializer(this.expectingPrimitiveValue, this.elementType, responseInfo.MaxProtocolVersion, out type);
this.materializer = ODataMaterializer.CreateMaterializerForMessage(responseMessage, responseInfo, materializerType, queryComponents, plan, payloadKind);
}
开发者ID:nickchal,项目名称:pash,代码行数:10,代码来源:MaterializeAtom.cs
示例15: MessageWriterBuilder
/// <summary>
/// Prevents a default instance of the <see cref="MessageWriterBuilder"/> class from being created.
/// </summary>
/// <param name="serviceUri">The service URI.</param>
/// <param name="responseVersion">The response version.</param>
/// <param name="dataService">The data service.</param>
/// <param name="responseMessage">The response message.</param>
/// <param name="model">The model to provide to the message writer.</param>
private MessageWriterBuilder(Uri serviceUri, Version responseVersion, IDataService dataService, IODataResponseMessage responseMessage, IEdmModel model)
{
this.writerSettings = CreateMessageWriterSettings();
ApplyCommonSettings(this.writerSettings, serviceUri, responseVersion, dataService, responseMessage);
Debug.Assert(responseMessage != null, "responseMessage != null");
this.responseMessage = responseMessage;
this.model = model;
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:18,代码来源:MessageWriterBuilder.cs
示例16: DetectPayloadKind
/// <summary>
/// Detects the payload kinds supported by this format for the specified message payload.
/// </summary>
/// <param name="responseMessage">The response message with the payload stream.</param>
/// <param name="detectionInfo">Additional information available for the payload kind detection.</param>
/// <returns>The set of <see cref="ODataPayloadKind"/>s that are supported with the specified payload.</returns>
internal override IEnumerable<ODataPayloadKind> DetectPayloadKind(
IODataResponseMessage responseMessage,
ODataPayloadKindDetectionInfo detectionInfo)
{
DebugUtils.CheckNoExternalCallers();
ExceptionUtils.CheckArgumentNotNull(responseMessage, "responseMessage");
ExceptionUtils.CheckArgumentNotNull(detectionInfo, "detectionInfo");
Stream messageStream = ((ODataMessage)responseMessage).GetStream();
return this.DetectPayloadKindImplementation(messageStream, /*readingResponse*/ true, /*synchronous*/ true, detectionInfo);
}
开发者ID:smasonuk,项目名称:odata-sparql,代码行数:17,代码来源:ODataAtomFormat.cs
示例17: DataServiceTransportException
/// <summary>
/// Constructs a new instance of DataServiceTransportException.
/// </summary>
/// <param name="response">ResponseMessage from the exception so that the error payload can be read.</param>
/// <param name="innerException">Actual exception that this exception is wrapping.</param>
public DataServiceTransportException(IODataResponseMessage response, Exception innerException)
: base(innerException.Message, innerException)
{
Util.CheckArgumentNull(innerException, "innerException");
this.state.ResponseMessage = response;
#if !PORTABLELIB
this.SerializeObjectState += (sender, e) => e.AddSerializedState(this.state);
#endif
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:16,代码来源:DataServiceWebException.cs
示例18: Process
public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
{
using (var messageWriter = this.CreateMessageWriter(responseMessage))
{
ODataError error;
HttpStatusCode statusCode;
this.BuildODataError(out error, out statusCode);
responseMessage.SetStatusCode(statusCode);
messageWriter.WriteError(error, true);
}
}
开发者ID:chinadragon0515,项目名称:ODataSamples,代码行数:12,代码来源:ErrorHandler.cs
示例19: Process
public override void Process(IODataRequestMessage requestMessage, IODataResponseMessage responseMessage)
{
switch (this.HttpMethod)
{
case HttpMethod.POST:
this.ProcessCreate(requestMessage.GetStream(), responseMessage);
break;
case HttpMethod.PUT:
this.ProcessUpdate(requestMessage.GetStream(), responseMessage);
break;
}
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:12,代码来源:MediaStreamHandler.cs
示例20: ForNormalRequest
/// <summary>
/// Create a new instance of ODataMessageWriterSettings for normal requests.
/// </summary>
/// <param name="dataService">Data service instance.</param>
/// <param name="requestDescription">The current request description.</param>
/// <param name="responseMessage">IODataResponseMessage implementation.</param>
/// <param name="model">The model to provide to the message writer.</param>
/// <returns>An instance of a message writer with the appropriate settings.</returns>
internal static MessageWriterBuilder ForNormalRequest(IDataService dataService, RequestDescription requestDescription, IODataResponseMessage responseMessage, IEdmModel model)
{
Debug.Assert(dataService != null, "dataService != null");
Debug.Assert(dataService.OperationContext != null, "dataService.OperationContext != null");
Debug.Assert(requestDescription != null, "requestDescription != null");
Debug.Assert(dataService.OperationContext.RequestMessage != null, "dataService.OperationContext.RequestMessage != null");
Debug.Assert(responseMessage != null, "responseMessage != null");
Uri serviceUri = dataService.OperationContext.AbsoluteServiceUri;
Version responseVersion = requestDescription.ActualResponseVersion;
MessageWriterBuilder messageWriterBuilder = new MessageWriterBuilder(serviceUri, responseVersion, dataService, responseMessage, model);
// ODataLib doesn't allow custom MIME types on raw values (must be text/plain for non-binary, and application/octet for binary values).
// To maintain existing V1/V2 behavior, work around this by setting the format as RawValue (we handle conneg ourself for this, so don't make ODL do its own),
// and then later manually override the content type header. Conneg is done by Astoria in DataService.CreateResponseBodyWriter.
if (requestDescription.ResponsePayloadKind == ODataPayloadKind.Value && !string.IsNullOrEmpty(requestDescription.MimeType))
{
messageWriterBuilder.WriterSettings.SetContentType(ODataFormat.RawValue);
}
else
{
string acceptHeaderValue = dataService.OperationContext.RequestMessage.GetAcceptableContentTypes();
// In V1/V2 we defaulted to charset=utf-8 for the response when there was no specific Accept-Charset.
// ODataMessageWriter uses a different default in some cases depending on the media type, so we need to override that here.
string requestAcceptCharSet = dataService.OperationContext.RequestMessage.GetRequestAcceptCharsetHeader();
if (string.IsNullOrEmpty(requestAcceptCharSet) || requestAcceptCharSet == "*")
{
requestAcceptCharSet = XmlConstants.Utf8Encoding;
}
messageWriterBuilder.WriterSettings.SetContentType(acceptHeaderValue, requestAcceptCharSet);
}
// always set the metadata document URI. ODataLib will decide whether or not to write it.
messageWriterBuilder.WriterSettings.ODataUri = new ODataUri()
{
ServiceRoot = serviceUri,
SelectAndExpand = requestDescription.ExpandAndSelect.Clause,
Path = requestDescription.Path
};
messageWriterBuilder.WriterSettings.JsonPCallback = requestDescription.JsonPaddingFunctionName;
return messageWriterBuilder;
}
开发者ID:larsenjo,项目名称:odata.net,代码行数:55,代码来源:MessageWriterBuilder.cs
注:本文中的IODataResponseMessage类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论