question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Why would a ObjectDisposedException occur when writing to a stream?

See original GitHub issue

In an Asp.Net core 3.1 app on linux using the gRPC framework, a generic Throttle class (AmzThrottle) calls Amazon to get product information. When the API calls to Amazon hit a threshold to begin throttling (wait), a Timer is set to fire and resume the requests at the appropriate time and then the thread exits. Once the Timer elapses and the thread begins doing Amazon work again, the priceApi.OnCompletion callback (WritePriceToResponseStream) is fired which in turn calls priceRespStream.WriteAsync. At this point an exception hits because IFeatureCollection has been disposed.

The exception occurs prior to the GetPrices method exiting. In the AmzThrottle class for the Timer callback, the first thing that is completed is to turn the Timer off. There is just one thread invoking the callback to write to the gRPC stream at a time.

When inspecting the priceRespStream variable in the WritePriceToResponseStream callback in the debugger, the _writeTask member reads: _writeTask = Id = 7, Status = RanToCompletion, Method = "{null}", Result = "System.Threading.Tasks.VoidTaskResult". The crash happens prior to the priceTcs TaskCompletionSource being triggered with SetResult(true) in the GetPrices method.

Internet searches show that miss-use of HttpContext can cause this, but I’m not using that class directly at all.

What am I doing wrong to cause this exception?

Log information:

2020-11-24 13:14:00.578 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in d:\<snip>

Server:

public class AmzProductsSvc : AmazonProductsApi.AmazonProductsApiBase  {
    private readonly AmzThrottle<GetLowestPricedOffers> priceApi;
    private int priceCount;
    private int expectedPriceCount;
    private TaskCompletionSource<bool> priceTcs;

    public AmzProductsSvc(AmzThrottle<GetLowestPricedOffers> priceApi) {
        this.priceApi       = priceApi;
    }
    public override async Task GetPrices(PriceRequests request, IServerStreamWriter<PriceResponse> priceStream, ServerCallContext context) {
        try {
            var hiPri               = request.Request.Where(r => Priority.High == r.Queue)?.Select(a => a.Asin)?.ToList();
            var nPri                = request.Request.Where(r => Priority.Normal == r.Queue)?.Select(a => a.Asin)?.ToList();
            expectedPriceCount      = hiPri.Count + nPri.Count;
            priceTcs                = new TaskCompletionSource<bool>();
            priceApi.OnCompletion   += async(sender, args) => await WritePriceToResponseStream(priceStream, args);

            if(null != hiPri && 0 < hiPri.Count) {
                var hiPriParams     = new List<AmzApiParams>();
                foreach(var hp in hiPri)
                    hiPriParams.Add(new AmzApiParams { Input = hp } );

                priceApi.AddRangeToQueue(hiPriParams, Priority.High);
            }
            if(null != nPri && 0 < nPri.Count) {
                var normPriParams = new List<AmzApiParams>();
                foreach(var np in nPri)
                    normPriParams.Add(new AmzApiParams{ Input = np } );

                priceApi.AddRangeToQueue(normPriParams, Priority.Normal);
            }
            await priceTcs.Task;
        }
        catch (Exception ex) {
            Log.Error(ex, string.Empty);
        }
    }
    private async Task WritePriceToResponseStream(IServerStreamWriter<PriceResponse> priceRespStream, EventArgs e) {
        try {
            var args = (GetLowestPricedOffersEventArgs)e;
            await priceRespStream.WriteAsync(new PriceResponse { 
                    Asin        = args.ASIN, 
                    Price       = (double)args.Price, 
                    Notfound    = args.NotFound 
                }
            );
        }
        catch (Exception ex) {
            Log.Error(ex, "Failed to write price response gRPC message to stream.");
        }
        finally {
            priceCount++;
            if(expectedPriceCount == priceCount) 
                priceTcs.SetResult(true);
            
        }
    }
}

Client:

private async Task SetProductPricesFromAmazon(List<Product> products, string schedName) {
    try {
        using(var channel   = GetGrpcChannel()) {
            var client      = new AmazonProductsApi.AmazonProductsApiClient(channel);
            var req         = new PriceRequests();
            foreach(var prod in products) {
                if(null == req.Request.FirstOrDefault(r => r.Asin.Equals(prod.ASIN, StringComparison.InvariantCultureIgnoreCase)))
                    req.Request.Add(new PriceRequest{ Asin = prod.ASIN, Queue = Priority.High });
            }
            var stream          = client.GetPrices(req);
            var tokenSource     = new CancellationToken();
            var numProcessed    = 0;
            await foreach(var price in stream.ResponseStream.ReadAllAsync(tokenSource)) {
                numProcessed++;
                var isFound = string.IsNullOrEmpty(price.Notfound) && string.IsNullOrEmpty(price.Error);
                if(isFound) {
                    // We sometimes have multiple products with the same ASIN match
                    var prodList = products.Where(p => p.ASIN.Equals(price.Asin));
                    foreach(var prod in prodList) { 
                        prod.AmznPrice   = Convert.ToDecimal(price.Price);
                        prod.IsUpdated   = true;
                    }
                }
                if(req.Request.Count == numProcessed) {
                    await Product.SaveAsync(products, schedName);
                    return;
                }
            }
        }
    }
    catch (Exception ex) {
        Log.Error(ex, string.Empty);
    }
}

Asp.Net core startup:

public class Startup {
    public void ConfigureServices(IServiceCollection services) {
        services.AddGrpc();
        services.AddSingleton<AmzThrottle<GetLowestPricedOffers>>();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
        if (env.IsDevelopment()) {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints => {
            endpoints.MapGrpcService<AmzProductsSvc>();
            endpoints.MapGet("/", async context => {
                await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client.");
            });
        });
    }
}

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:1
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
JamesNKcommented, Dec 1, 2020

FYI https://www.nuget.org/packages/Grpc.AspNetCore with version 2.34.0-pre1 or later now gives a better error message. It’s something like: Can't write message to completed gRPC call.

0reactions
Techtonictoolscommented, Nov 25, 2020

I’ve gathered the debug spew and edited it to remove excess noise from an overnight run. The code in the orginal post only includes the pricing API for the Amazon service since I was trying to minimize the post. There is another API call (/KeepaApi/GetProductInfo) that is in the spew below. I didn’t want to edit the gRPC spew that I wasn’t sure of so I left the keepa gRPC spew in there. The difference with the Keepa gRPC API is how I wait for the request to finish. In the GetPrices, the TaskCompletionSource is used. In the Keepa call, AwaitCancellation is used. If you would look through the spew to see what is going wrong I’d appreciate it.

    private static Task AwaitCancellation(CancellationToken token) {
        var completion      = new TaskCompletionSource<object>();
        token.Register(()   => completion.SetResult(null));
        return completion.Task;
    }

2020-11-24 18:10:29.289 -08:00 [DBG] Hosting starting
2020-11-24 18:10:29.445 -08:00 [DBG] Failed to locate the development https certificate at 'null'.
2020-11-24 18:10:29.491 -08:00 [DBG] Using development certificate: CN=localhost (Thumbprint: )
2020-11-24 18:10:29.502 -08:00 [INF] Now listening on: https://127.0.0.1:5003
2020-11-24 18:10:29.503 -08:00 [DBG] Loaded hosting startup assembly Amazon
2020-11-24 18:10:29.503 -08:00 [INF] Application started. Press Ctrl+C to shut down.
2020-11-24 18:10:29.503 -08:00 [INF] Hosting environment: Production
2020-11-24 18:10:29.503 -08:00 [INF] Content root path: /AmazonSvc
2020-11-24 18:10:29.503 -08:00 [DBG] Hosting started
2020-11-24 18:39:48.214 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" accepted.
2020-11-24 18:39:48.217 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" started.
2020-11-24 18:39:48.619 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/AmazonProductsApi/GetPrices application/grpc 
2020-11-24 18:39:48.625 -08:00 [DBG] Wildcard detected, all requests with hosts will be allowed.
2020-11-24 18:39:48.677 -08:00 [DBG] 3 candidate(s) found for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.681 -08:00 [DBG] Endpoint 'gRPC - /AmazonProductsApi/GetPrices' with route pattern '/AmazonProductsApi/GetPrices' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.683 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for AmazonProductsApi' with route pattern 'AmazonProductsApi/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.683 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.683 -08:00 [DBG] Request matched endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.723 -08:00 [INF] Executing endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 18:39:48.743 -08:00 [DBG] Reading message.
2020-11-24 18:39:48.744 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9", Request id "0HM4GTDG6FJQ9:00000001": started reading request body.
2020-11-24 18:39:48.744 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9", Request id "0HM4GTDG6FJQ9:00000001": done reading request body.
2020-11-24 18:40:28.329 -08:00 [WRN] MarketplaceWebServiceProductsException You exceeded your quota of 200.0 requests per 1 hour for operation Products/2011-10-01/GetLowestPricedOffersForASIN.  Your quota will reset on Wed Nov 25 03:14:00 UTC 2020. GetLowestPricedOffersForASINRequest ASIN B07BMHKNMX
2020-11-24 18:40:28.333 -08:00 [INF] Quota exceeded. Changing timer to fire in 00:33:31.6665312.
2020-11-24 19:14:00.660 -08:00 [INF] Called GetLowestPricedOffersForASINRequest with ASIN B07BMHKNMX. Price $14.99.
2020-11-24 19:14:00.668 -08:00 [DBG] Sending message.
<snipped Sending message and Amazon spew>
2020-11-24 19:15:29.655 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" accepted.
2020-11-24 19:15:29.656 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" started.
2020-11-24 19:15:29.684 -08:00 [INF] Executed endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 19:15:29.687 -08:00 [INF] Request finished in 2141072.6316ms 200 application/grpc
2020-11-24 19:15:29.785 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/KeepaApi/GetProductInfo application/grpc 
2020-11-24 19:15:29.787 -08:00 [DBG] 3 candidate(s) found for the request path '/KeepaApi/GetProductInfo'
2020-11-24 19:15:29.787 -08:00 [DBG] Endpoint 'gRPC - /KeepaApi/GetProductInfo' with route pattern '/KeepaApi/GetProductInfo' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 19:15:29.787 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for KeepaApi' with route pattern 'KeepaApi/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 19:15:29.788 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 19:15:29.788 -08:00 [DBG] Request matched endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 19:15:29.788 -08:00 [INF] Executing endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 19:15:29.788 -08:00 [DBG] Reading message.
2020-11-24 19:15:29.789 -08:00 [DBG] Connection id "0HM4GTDG6FJQA", Request id "0HM4GTDG6FJQA:00000001": started reading request body.
2020-11-24 19:15:29.789 -08:00 [DBG] Connection id "0HM4GTDG6FJQA", Request id "0HM4GTDG6FJQA:00000001": done reading request body.
2020-11-24 19:15:31.452 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07DJTL4Y4&stats=90&history=1&stats=90&buybox=1
2020-11-24 19:15:31.807 -08:00 [DBG] Sending message.
2020-11-24 19:15:32.612 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07VFQNNHB&stats=90&history=1&stats=90&buybox=1
2020-11-24 19:15:32.629 -08:00 [DBG] Sending message.
2020-11-24 19:15:32.638 -08:00 [INF] Executed endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 19:15:32.638 -08:00 [INF] Request finished in 2853.6085ms 200 application/grpc
2020-11-24 19:16:20.445 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" received FIN.
2020-11-24 19:16:20.446 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" received FIN.
2020-11-24 19:16:20.471 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" sending FIN because: "The client closed the connection."
2020-11-24 19:16:20.485 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" is closed. The last processed stream ID was 1.
2020-11-24 19:16:20.488 -08:00 [DBG] Connection id "0HM4GTDG6FJQA" stopped.
2020-11-24 19:16:20.488 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" is closed. The last processed stream ID was 1.
2020-11-24 19:16:20.496 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" sending FIN because: "The client closed the connection."
2020-11-24 19:16:20.497 -08:00 [DBG] Connection id "0HM4GTDG6FJQ9" stopped.
2020-11-24 19:48:47.383 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" accepted.
2020-11-24 19:48:47.384 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" started.
2020-11-24 19:48:47.721 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/AmazonProductsApi/GetPrices application/grpc 
2020-11-24 19:48:47.722 -08:00 [DBG] 3 candidate(s) found for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [DBG] Endpoint 'gRPC - /AmazonProductsApi/GetPrices' with route pattern '/AmazonProductsApi/GetPrices' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for AmazonProductsApi' with route pattern 'AmazonProductsApi/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [DBG] Request matched endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [INF] Executing endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 19:48:47.723 -08:00 [DBG] Reading message.
2020-11-24 19:48:47.723 -08:00 [DBG] Connection id "0HM4GTDG6FJQB", Request id "0HM4GTDG6FJQB:00000001": started reading request body.
2020-11-24 19:48:47.723 -08:00 [DBG] Connection id "0HM4GTDG6FJQB", Request id "0HM4GTDG6FJQB:00000001": done reading request body.
2020-11-24 19:48:54.591 -08:00 [WRN] MarketplaceWebServiceProductsException You exceeded your quota of 200.0 requests per 1 hour for operation Products/2011-10-01/GetLowestPricedOffersForASIN.  Your quota will reset on Wed Nov 25 04:14:00 UTC 2020. GetLowestPricedOffersForASINRequest ASIN B07BMHKNMX
2020-11-24 19:48:54.592 -08:00 [INF] Quota exceeded. Changing timer to fire in 00:25:05.4074666.
2020-11-24 20:14:00.478 -08:00 [INF] Called GetLowestPricedOffersForASINRequest with ASIN B07BMHKNMX. Price $14.99.
2020-11-24 20:14:00.480 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
2020-11-24 20:14:00.501 -08:00 [DBG] Sending message.
2020-11-24 20:14:00.821 -08:00 [INF] Called GetLowestPricedOffersForASINRequest with ASIN B07SLNW1BT. Price $33.00.
2020-11-24 20:14:00.821 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
<snipped repeated exception messages andAmazon spew>
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
2020-11-24 20:15:14.072 -08:00 [DBG] Sending message.
2020-11-24 20:15:14.073 -08:00 [INF] Executed endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 20:15:14.077 -08:00 [INF] Request finished in 1586356.5984ms 200 application/grpc
2020-11-24 20:15:14.292 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" accepted.
2020-11-24 20:15:14.293 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" started.
2020-11-24 20:15:14.385 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/KeepaApi/GetProductInfo application/grpc 
2020-11-24 20:15:14.386 -08:00 [DBG] 3 candidate(s) found for the request path '/KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [DBG] Endpoint 'gRPC - /KeepaApi/GetProductInfo' with route pattern '/KeepaApi/GetProductInfo' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for KeepaApi' with route pattern 'KeepaApi/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [DBG] Request matched endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [INF] Executing endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 20:15:14.386 -08:00 [DBG] Reading message.
2020-11-24 20:15:14.386 -08:00 [DBG] Connection id "0HM4GTDG6FJQC", Request id "0HM4GTDG6FJQC:00000001": started reading request body.
2020-11-24 20:15:14.389 -08:00 [DBG] Connection id "0HM4GTDG6FJQC", Request id "0HM4GTDG6FJQC:00000001": done reading request body.
2020-11-24 20:15:15.323 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07DJTL4Y4&stats=90&history=1&stats=90&buybox=1
2020-11-24 20:15:15.332 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 20:15:15.334 -08:00 [DBG] Sending message.
2020-11-24 20:15:15.883 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B005EW61MA&stats=90&history=1&stats=90&buybox=1
2020-11-24 20:15:15.907 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 20:15:15.908 -08:00 [DBG] Sending message.
2020-11-24 20:15:16.174 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07VFQNNHB&stats=90&history=1&stats=90&buybox=1
2020-11-24 20:15:16.175 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 20:15:16.176 -08:00 [DBG] Sending message.
2020-11-24 20:15:16.187 -08:00 [INF] Executed endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 20:15:16.187 -08:00 [INF] Request finished in 1801.4643ms 200 application/grpc
2020-11-24 20:17:17.027 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" is closing.
2020-11-24 20:17:17.027 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" is closed. The last processed stream ID was 1.
2020-11-24 20:17:17.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" stopped.
2020-11-24 20:17:17.031 -08:00 [DBG] Connection id "0HM4GTDG6FJQB" sending FIN because: "The Socket transport's send loop completed gracefully."
2020-11-24 20:17:18.028 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" is closing.
2020-11-24 20:17:18.029 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" is closed. The last processed stream ID was 1.
2020-11-24 20:17:18.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" received FIN.
2020-11-24 20:17:18.031 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" stopped.
2020-11-24 20:17:18.032 -08:00 [DBG] Connection id "0HM4GTDG6FJQC" sending FIN because: "The Socket transport's send loop completed gracefully."
2020-11-24 21:07:10.672 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" accepted.
2020-11-24 21:07:10.675 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" started.
2020-11-24 21:07:10.830 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/AmazonProductsApi/GetPrices application/grpc 
2020-11-24 21:07:10.830 -08:00 [DBG] 3 candidate(s) found for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.830 -08:00 [DBG] Endpoint 'gRPC - /AmazonProductsApi/GetPrices' with route pattern '/AmazonProductsApi/GetPrices' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.831 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for AmazonProductsApi' with route pattern 'AmazonProductsApi/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.831 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.831 -08:00 [DBG] Request matched endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.831 -08:00 [INF] Executing endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 21:07:10.831 -08:00 [DBG] Reading message.
2020-11-24 21:07:10.831 -08:00 [DBG] Connection id "0HM4GTDG6FJQD", Request id "0HM4GTDG6FJQD:00000001": started reading request body.
2020-11-24 21:07:10.831 -08:00 [DBG] Connection id "0HM4GTDG6FJQD", Request id "0HM4GTDG6FJQD:00000001": done reading request body.
2020-11-24 21:07:14.380 -08:00 [WRN] MarketplaceWebServiceProductsException You exceeded your quota of 200.0 requests per 1 hour for operation Products/2011-10-01/GetLowestPricedOffersForASIN.  Your quota will reset on Wed Nov 25 05:14:00 UTC 2020. GetLowestPricedOffersForASINRequest ASIN B07BMHKNMX
2020-11-24 21:07:14.380 -08:00 [INF] Quota exceeded. Changing timer to fire in 00:06:45.6192003.
2020-11-24 21:14:00.501 -08:00 [INF] Called GetLowestPricedOffersForASINRequest with ASIN B07BMHKNMX. Price $14.99.
2020-11-24 21:14:00.501 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
2020-11-24 21:14:00.502 -08:00 [ERR] Failed to write price response gRPC message to stream.
<snipped repeated spew>
2020-11-24 21:15:12.398 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
2020-11-24 21:15:12.398 -08:00 [DBG] Sending message.
2020-11-24 21:15:12.398 -08:00 [INF] Executed endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 21:15:12.399 -08:00 [INF] Request finished in 481569.2046ms 200 application/grpc
2020-11-24 21:15:12.542 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" accepted.
2020-11-24 21:15:12.543 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" started.
2020-11-24 21:15:12.624 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/KeepaApi/GetProductInfo application/grpc 
2020-11-24 21:15:12.625 -08:00 [DBG] 3 candidate(s) found for the request path '/KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [DBG] Endpoint 'gRPC - /KeepaApi/GetProductInfo' with route pattern '/KeepaApi/GetProductInfo' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for KeepaApi' with route pattern 'KeepaApi/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [DBG] Request matched endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [INF] Executing endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 21:15:12.625 -08:00 [DBG] Reading message.
2020-11-24 21:15:12.625 -08:00 [DBG] Connection id "0HM4GTDG6FJQE", Request id "0HM4GTDG6FJQE:00000001": started reading request body.
2020-11-24 21:15:12.625 -08:00 [DBG] Connection id "0HM4GTDG6FJQE", Request id "0HM4GTDG6FJQE:00000001": done reading request body.
2020-11-24 21:15:14.110 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07DJTL4Y4&stats=90&history=1&stats=90&buybox=1
2020-11-24 21:15:14.117 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 21:15:14.118 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 21:15:14.120 -08:00 [DBG] Sending message.
2020-11-24 21:15:14.385 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07VFQNNHB&stats=90&history=1&stats=90&buybox=1
2020-11-24 21:15:14.387 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 21:15:14.387 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 21:15:14.387 -08:00 [DBG] Sending message.
2020-11-24 21:15:14.394 -08:00 [INF] Executed endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 21:15:14.394 -08:00 [INF] Request finished in 1769.9975ms 200 application/grpc
2020-11-24 21:17:14.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" is closing.
2020-11-24 21:17:14.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" is closed. The last processed stream ID was 1.
2020-11-24 21:17:14.032 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" received FIN.
2020-11-24 21:17:14.033 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" stopped.
2020-11-24 21:17:14.034 -08:00 [DBG] Connection id "0HM4GTDG6FJQD" sending FIN because: "The Socket transport's send loop completed gracefully."
2020-11-24 21:17:16.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" is closing.
2020-11-24 21:17:16.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" is closed. The last processed stream ID was 1.
2020-11-24 21:17:16.032 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" received FIN.
2020-11-24 21:17:16.032 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" sending FIN because: "The client closed the connection."
2020-11-24 21:17:16.034 -08:00 [DBG] Connection id "0HM4GTDG6FJQE" stopped.
2020-11-24 22:35:46.605 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" accepted.
2020-11-24 22:35:46.606 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" started.
2020-11-24 22:35:46.782 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/AmazonProductsApi/GetPrices application/grpc 
2020-11-24 22:35:46.782 -08:00 [DBG] 3 candidate(s) found for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [DBG] Endpoint 'gRPC - /AmazonProductsApi/GetPrices' with route pattern '/AmazonProductsApi/GetPrices' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for AmazonProductsApi' with route pattern 'AmazonProductsApi/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [DBG] Request matched endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [INF] Executing endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 22:35:46.782 -08:00 [DBG] Reading message.
2020-11-24 22:35:46.783 -08:00 [DBG] Connection id "0HM4GTDG6FJQF", Request id "0HM4GTDG6FJQF:00000001": started reading request body.
2020-11-24 22:35:46.783 -08:00 [DBG] Connection id "0HM4GTDG6FJQF", Request id "0HM4GTDG6FJQF:00000001": done reading request body.
2020-11-24 22:35:47.331 -08:00 [INF] Called GetLowestPricedOffersForASINRequest with ASIN B07BMHKNMX. Price $14.99.
2020-11-24 22:35:47.331 -08:00 [ERR] Failed to write price response gRPC message to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
<snip>
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.AmzProductsSvc.WritePriceToResponseStream(IServerStreamWriter`1 priceRespStream, EventArgs e) in 
2020-11-24 22:36:58.975 -08:00 [DBG] Sending message.
2020-11-24 22:36:58.975 -08:00 [INF] Executed endpoint 'gRPC - /AmazonProductsApi/GetPrices'
2020-11-24 22:36:58.976 -08:00 [INF] Request finished in 72193.9953ms 200 application/grpc
2020-11-24 22:36:59.079 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" accepted.
2020-11-24 22:36:59.079 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" started.
2020-11-24 22:36:59.100 -08:00 [INF] Request starting HTTP/2 POST https://127.0.0.1:5003/KeepaApi/GetProductInfo application/grpc 
2020-11-24 22:36:59.100 -08:00 [DBG] 3 candidate(s) found for the request path '/KeepaApi/GetProductInfo'
2020-11-24 22:36:59.100 -08:00 [DBG] Endpoint 'gRPC - /KeepaApi/GetProductInfo' with route pattern '/KeepaApi/GetProductInfo' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 22:36:59.100 -08:00 [DBG] Endpoint 'gRPC - Unimplemented method for KeepaApi' with route pattern 'KeepaApi/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 22:36:59.100 -08:00 [DBG] Endpoint 'gRPC - Unimplemented service' with route pattern '{unimplementedService}/{unimplementedMethod}' is valid for the request path '/KeepaApi/GetProductInfo'
2020-11-24 22:36:59.101 -08:00 [DBG] Request matched endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 22:36:59.101 -08:00 [INF] Executing endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 22:36:59.101 -08:00 [DBG] Reading message.
2020-11-24 22:36:59.101 -08:00 [DBG] Connection id "0HM4GTDG6FJQG", Request id "0HM4GTDG6FJQG:00000001": started reading request body.
2020-11-24 22:36:59.101 -08:00 [DBG] Connection id "0HM4GTDG6FJQG", Request id "0HM4GTDG6FJQG:00000001": done reading request body.
2020-11-24 22:37:00.177 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07DJTL4Y4&stats=90&history=1&stats=90&buybox=1
2020-11-24 22:37:00.179 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.180 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.180 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.181 -08:00 [DBG] Sending message.
2020-11-24 22:37:00.475 -08:00 [INF] Called Keepa using url https://api.keepa.com/product?key=apikey&domain=1&asin=B07VFQNNHB&stats=90&history=1&stats=90&buybox=1
2020-11-24 22:37:00.476 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.477 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.477 -08:00 [ERR] Failed to write Keepa RankResponse to stream.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)
at Amazon.Services.KeepaSvc.OnRankCompletion(Object sender, ProductInfoResponse resp) in 
2020-11-24 22:37:00.477 -08:00 [DBG] Sending message.
2020-11-24 22:37:00.490 -08:00 [INF] Executed endpoint 'gRPC - /KeepaApi/GetProductInfo'
2020-11-24 22:37:00.491 -08:00 [INF] Request finished in 1391.1255ms 200 application/grpc
2020-11-24 22:39:01.028 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" is closing.
2020-11-24 22:39:01.028 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" is closed. The last processed stream ID was 1.
2020-11-24 22:39:01.030 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" received FIN.
2020-11-24 22:39:01.031 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" stopped.
2020-11-24 22:39:01.031 -08:00 [DBG] Connection id "0HM4GTDG6FJQF" sending FIN because: "The Socket transport's send loop completed gracefully."
2020-11-24 22:39:02.027 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" is closing.
2020-11-24 22:39:02.027 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" is closed. The last processed stream ID was 1.
2020-11-24 22:39:02.029 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" received FIN.
2020-11-24 22:39:02.029 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" sending FIN because: "The client closed the connection."
2020-11-24 22:39:02.031 -08:00 [DBG] Connection id "0HM4GTDG6FJQG" stopped.
Read more comments on GitHub >

github_iconTop Results From Across the Web

System.ObjectDisposedException: Cannot access a closed ...
So I will make my comment an answer: Yes, a stream could just as well be closed from outside your code, so make...
Read more >
Cannot access a closed Stream when running this ...
ObjectDisposedException: Cannot access a closed Stream when running this statement MemoryStream stream = (MemoryStream)data.
Read more >
Stream.Write Method (System.IO)
When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream...
Read more >
System.IO.Stream Class
Writing is the transfer of data from a data structure into a stream. ... stream might result in an exception (such as ObjectDisposedException,...
Read more >
Type: System.IO.Stream
An I/O error occurs, such as the stream being closed. NotSupportedException, The stream does not support seeking. ObjectDisposedException, Methods were called ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found