Skip to content

Batch request throw This operation is not supported for a relative URI #6

@sleidor

Description

@sleidor

Description

Example

var batch = odataClient.CreateBatch();
batch.Create("Tests", new TestEntity { Name = "test"} );
await batch.ExecuteAsync(context.CancellationToken);

Error from OData Client

This operation is not supported for a relative URI.

StackTrace

 at System.Uri.get_PathAndQuery()
   at PanoramicData.OData.Client.HttpMessageContent.BuildContentAsync()
   at PanoramicData.OData.Client.HttpMessageContent.SerializeToStreamAsync(Stream stream, TransportContext context)
   at System.Net.Http.HttpContent.<CopyToAsync>g__WaitAsync|46_0(ValueTask copyTask)
   at System.Net.Http.MultipartContent.SerializeToStreamAsyncCore(Stream stream, TransportContext context, CancellationToken cancellationToken)
   at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, LimitArrayPoolWriteStream tempBuffer)
   at System.Net.Http.HttpContent.WaitAndReturnAsync[TState,TResult](Task waitTask, TState state, Func`2 returnFunc)
   at PanoramicData.OData.Client.ODataClient.CloneRequestAsync(HttpRequestMessage request)
   at PanoramicData.OData.Client.ODataClient.TrySendRequestAsync(HttpRequestMessage request, Int32 retryCount, CancellationToken cancellationToken)
   at PanoramicData.OData.Client.ODataClient.SendWithRetryAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at PanoramicData.OData.Client.ODataClient.ExecuteBatchAsync(ODataBatchBuilder batch, CancellationToken cancellationToken)

Environment

  • PanoramicData.OData.Client version: 10.0.47
  • .NET version: .NET 10

Root Cause

Every batch operation has relative url. So we need add check if url IsAbsoluteUri in HttpMessageContent

private async Task<byte[]> BuildContentAsync()
	{
		var sb = new StringBuilder();
		// Request line: METHOD path HTTP/1.1
		// Below add check IsAbsoluteUri
		var requestUri = _request.RequestUri?.PathAndQuery ?? "/";.
	...
	}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions