New to site?


Lost password? (X)

Already have an account?


(X)

Presents

#CSHARPCON20

The C# Corner Annual Conference 2020 is a three-day annual event for software professionals and developers.

3
DAYS
72
SPEAKERS
65
SESSIONS

Magnus Mårtensson
Microsoft Regional Director, Azure MVP, CEO Loftysoft

Avirag Jain
Director & CTO R Systems

Mahesh Chand
Founder C# Corner, CEO Mindcracker

Chris Gali
CEO & Co-Founder Graphite

Subinder Khurana
Chief Architect StoryProcess, Founder NASSCOM DeepTech Club

Bryan Rishforth
Investor, Chairman Graphite

Bryn Everson
Director Biz Dev Graphite

Raj Tiwari
Digital Transformation Leader, Futurist and Visionary

Joseph Guadagno
Microsoft MVP, Lead Quicken Loans

Nikita Sachdev
Entrepreneur, Blockchain Enthusiast & Advisor, Social Media Influencer

Doug Wagner
COO & Founder Adapt Technical Group

Ritesh Modi
Architect, Senior Evangelist, Cloud Architect

Crystal Wenrick
Director Communications Mindcracker

Allen O’Neill
Microsoft MVP, Consulting Engineer/Architect

Praveen Kumar
CEO MCN Solutions

Chris Love
Founder Love2Dev, Microsoft MVP, Author

Sanjay Vyas
Microsoft Regional Director, Microsoft MVP, Founder & CEO SkillLabs Technologies

Veena Sarda
Deep Learning Consultant, Author

Sekhar Srinivasan
C# Corner MVP, Microsoft Certified Trainer, Pluralsight Author

Lalit Bansal
Founder & CEO - EIY SYS

Navdeep Garg
CEO Revinfotech

Prakash Tripathi
Tech Manager/Leader, Microsoft MVP, Blogger

Bhavna Jain
Breakthrough Consultant

Naveen Sharma
Enterprise Architect, Leadership Coach, Author

Vidya Vrat Agarwal
Principal Architect, Microsoft MVP, Author

Sheetal Agarwal
Founder Clownselors, Medical Clown, Trainer

Abhishek Kant
Founder GTM Catalyst

Vishnu Saran
Founder & CEO VoiceQube

Sandeep Soni
Founder & CEO Deccansoft, Microsoft Certified Trainer

Parveen Malik
AVP InfoSec & Vulnerability Management, Information Security Expert

Nitin Pandit
Microsoft MVP, Developer Evangelist, Author

Niloshima Srivastava
C# Corner MVP, Tech Architect, Trainer, Blogger

Bala Chirtsabesan
Senior Software Engineer at Microsoft, Author

Manoj Mittal
Sr. Technical Architect, C# Corner MVP, Author

Chandni Di
Co-Founder Voice of Slum

Vithal Wadje
Technical Lead, Microsoft MVP, Author

Shivam Ahuja
Founder SkillCircle, Business Mentor

Chervine Bhiwoo
Solution Architect, Microsoft MVP, Author

Saurabh Jain
Vice President Paytm, Founder Fun2Do Labs, Author

Vinay Solanki
Head IoT at Lenovo, Founder IoT-NCR

Anshu kumari
Founder Blockchainkids, Inventor, Trainer

Amit Singal
CEO Startup Buddy

Dev Pratap
Co-Founder & CEO Voice of Slum

Amey Vartak
Technology Consultant, Full Stack Developer, C# Corner MVP, Author

Viswanatha Swamy
Principal Software Engineer, C# Corner MVP, Author

Sanket Verma
Research Engineer @ Ballistics (Forensics) and Chair, PyData Delhi

Sourabh Somani
Lead Developer, Microsoft MVP, Author

Abhishek Mishra
Software Architect, C# Corner MVP, Author

Siddharth Vaghasia
Technical Consultant, C# Corner MVP, Blogger

Bassam Alugili
Senior Software Specialist, Database Expert

S Ravi Kumar
Solution Architect, C# Corner MVP, Author

Sundaram Subramanian
Full Stack Developer, C# Corner MVP, Speaker

Deepesh Somani
Solution Architect, Microsoft MVP, Author

Debasis Saha
Technical Project Manager, C# Corner MVP, Blogger, Author

Vipul Jain
Software Architect, C# Corner MVP, Author

Akshay Patel
Technical Architect, Microsoft Certified Trainer, C# Corner MVP, Author

Stephen Simon
RPA Developer, Evangelist, Author

Vivek Sharma
Founder Kingster636, AR/VR Specialist

Jeetendra Gund
Technical Lead, C# Corner MVP, Author

Sujal Beniwal
AI Enthusiast, Student

M Viknaraj
Microsoft MVP, Azure Architect, Author

Prasham Sabadra
Software Architect, C# Corner MVP, Trainer, Author

Aakash Maurya
Senior Developer, C# Corner MVP, Speaker

Ankit Sharma
Senior Software Engineer, C# Corner MVP, Author

Mangesh Gaherwar
Team Lead, C# Corner MVP, Author

Viral Jain
Technical Consultant, C# Corner MVP, Author

Bhasker Das
Solution Architect, Evangelist

Manish Dwivedi
Associate Project Manager

Ck Nitin
Programmer, Author

Rohit Gupta
Technical Trainer, Author

Manish Tewatia
Full-stack Marketer, UX Designer

Bhavya Gaur
Technical Illustrator

Rohit Tomar
SEO/SMO Expert

Web Track

Cloud & Data Track

Dev Track

8am-9am

Registration & Breakfast

9am-10am

Future of Desktop Apps with JS (ElectronJs)

Nitin Pandit

Building Serverless Microservices Using Microsoft Azure

Vithal Wadje

Innovating RPA: A Robot for Every Person

Stephen Simon

10am-11am

Managing Cloud Storage Accounts using Logic Apps

Viknaraj Manogararajah

Data visualization using Python

Sekhar Srinivasan

Going Cross platform with AR Foundation

Vivek Sharma

11am-12pm

Keynote

12pm-1pm

Managing your Azure dependencies in ASP.NET Core apps using VS

Bala Chirtsabesan

Securing Applications on Intelligent Azure

Abhishek Mishra

Getting started with Blazor the Framework of Future

S Ravi Kumar

1pm-2pm

Lunch

2pm-2:45pm

Build Progressive Web Apps using Angular 9

Debasis Saha

Build and deploy to any platform using Azure DevOps

Chervine Bhiwoo

Deep Dive in Azure Service Bus

Akshay Patel

2:45pm-3:45pm

Build a Native Mobile Application using React Native and JavaScript

Joseph Guadagno

Making sense of Web Job, Web Job SDK and Functions in Azure

Prakash Tripathi

CloudFront Distribution in AWS

Viral Jain

3:45pm-4pm

Tea Break

4pm-4:30pm

Introduction to PowerBI

Aakash Maurya

Build Advanced SPFx solutions with React and Graph API

Siddharth Vaghasia

Build Business Intelligence Analyst (BIA) Skills

Sundaram Subramanian

4:30pm-5pm

Deep dive of Power Platform – AI BUILDER

Prasham Sabadra

Panel 1

What's new in SharePoint development

Vipul Jain

5pm-5:30pm

Build a SSO (Single Sign On) based Native JavaScript application with Microsoft Identity within 10 minutes

Manoj Mittal

Panel 2

Applications and working of AI

Veena Sarda

5:30pm-6pm

Deploying serverless API's with .Net core 3.0 on AWS & Azure

Amey Vartak

Panel 3

Blockchain with .NET Core (Ark)

Anshu Kumari

6pm-6:30pm

Closing Note & Prize Distribution

Dev Track

Cloud Track

Architecture Track

Emerging Tech Track

8am-9am

Registration & Breakfast

9am-10am

Creating Full-Stack Web Apps Using Server-Side Blazor

Ankit Sharma

Real time face recognition with MS Cognitive Services

Niloshima Srivastava

Building Scalable APIs with GraphQL

Jeetendra Gund

Future of development with AI and Blockchain

Navdeep Garg

10am-11am

Debugging Tips and Tricks with Visual Studio 2019

Joseph Guadagno

Azure Containers

Abhishek Kant

Enterprise Architecture

Naveen Sharma

Bot Framework - learn it fast and look like a boss!

Allen O’Neill

11am-12:30pm

Keynote

12:30pm-1:30pm

.Net Core & C# 8 Performance

David McCarter

Working with Azure kubernetes services

Ritesh Modi

Becoming an Architect

Vidyavrat Agarwal

Why Techies Need to Learn Product Management

Saurabh Jain

1:30pm-2:30pm

Lunch

2:30pm-3:30pm

Build a rules engine in .Net Core

Sanjay Vyas

Building CI and CD Pipeline using Azure DevOps

Sandeep Soni

Entity Framework Core - Tips and Tricks, Performance Optimization, and Tuning

Bassam Alugili

Hacking your way into Data Science

Sanket Verma

3:30-4:15pm

Speed up your .Net Core Website

Sourabh Somani

Azure

Magnus Mårtensson

Demystifying Open Distro for Elasticsearch

Suman Debnath

Future of Data

Shivam Ahuja

4:15pm-4:30pm

Tea Break

4:30pm-5:15pm

gRPC with C# and .Net Core

Mangesh Gaherwar

Panel 1

Essentials of Cloud security

Parveen Malik

Power platform and Dynamics 365

Deepesh Somani

5:15pm-6pm

Microservices - the gRPC Way

Viswanatha Swamy

Panel 2

Reserved

Reserved

6pm-6:30pm

Closing Note & Prize Distribution

Resumable file uploads with Azure Blob Storage

A multi-gigabyte file sent through one HTTP request is vulnerable to timeouts, browser restarts, mobile network changes and proxy limits. It also forces web servers to receive data they do not need to interpret. Chunking replaces that fragile request with bounded transfers that can be retried independently, giving users a resumable file upload service without holding an entire payload in memory.

Building a file upload service with chunking and Azure Blob Storage follows this pattern: an ASP.NET Core API coordinates the upload while Azure Blob Storage keeps the bytes in a scalable block blob. The service tracks the session, validates each part and commits the finished object. For attendees following the C# and cloud tracks at C# Corner Annual Conference 2020, this demonstrates how API design, retry policies and cloud primitives combine in a production-oriented C# solution.

Why direct uploads become fragile

Large uploads are part of everyday Australian workflows: engineering teams in Sydney exchange project archives with offices in Melbourne and Brisbane, while field users may upload from regional centres over fixed wireless, DSL or mobile connections. Distance does not guarantee failure, but variable bandwidth and changing IP addresses make one long-lived request a poor assumption. The service should treat interruption as normal and preserve completed work.

Chunked transfer improves resilience because only the failed part needs another attempt. It also enables progress reporting, per-part checksums and controlled parallelism. After each request, the API can report the accepted indexes, allowing a client to resume from a server-confirmed position. If an application node restarts, already staged blocks remain available to the completion step.

Chunk size is a trade-off, not a magic number. Smaller parts reduce retry cost but increase request counts; larger parts improve throughput but waste more data when a connection drops. An 8 MiB chunk is a practical starting point, while high-volume ingestion may use 16–32 MiB parts. Keep the selected size consistent for the entire session.

Designing a resumable upload protocol

Expose three operations: create a session, upload a chunk and complete the session. The create request carries the declared file name, size, media type and optional checksum. The server authenticates the caller, applies quotas, generates an opaque upload identifier, and returns the chunk size and endpoint. Each chunk request carries that identifier, an index and the binary body; completion returns the final blob reference and status.

Persist the session before accepting data. Its metadata can contain the tenant, user, expected size, chunk size, accepted indexes, expiry and state. Generate deterministic Azure block IDs from the upload identifier and index, then Base64-encode them; all block IDs in a blob must have the same length. Re-uploading an index replaces the block with that ID, making retries safe once the bytes have been checked.

To finish, read the recorded indexes, place them in ascending order and call CommitBlockListAsync. Azure then exposes the block blob as one object. Treat completion as idempotent: if the database update fails after Azure commits, a retry should reconcile the existing object instead of creating another. A distributed lock per upload prevents concurrent completion requests from racing.

Configuring Azure Blob Storage

Use a private storage account and disable public blob access. Australian workloads should choose a region that matches their users and governance needs: Australia East in Sydney and Australia Southeast in Melbourne are common choices, while Australia Central can suit some central-government scenarios. An Australian copy can reduce latency and avoid unnecessary cross-border movement, but residency does not replace contractual or regulatory controls.

Target a block blob and stage each part with StageBlockAsync. Current Azure Storage APIs permit much larger blocks than 8 MiB, but a blob can contain at most 50,000 blocks. Choose the chunk size so the largest valid file fits that ceiling; 8 MiB parts support roughly 390 GiB, while 32 MiB parts support about 1.5 TiB. Azure discards uncommitted blocks that receive no activity for seven days, so abandoned sessions naturally expire.

Give each tenant a separate container or validated prefix, and create the real blob name on the server rather than trusting the uploaded name. Let the application use a narrow managed identity instead of embedding an account key. Enable diagnostic logs, metrics and, where required, soft delete or versioning. For direct browser-to-Azure transfers, configure CORS carefully and issue short-lived, user-delegated SAS tokens with only the required permissions.

Building the service with ASP.NET Core

Keep the ASP.NET Core layer thin. A typical .NET implementation obtains BlobServiceClient through DefaultAzureCredential, resolves the destination container and streams the request into Azure:

var blob = container.GetBlobClient(blobName);
var blockId = Convert.ToBase64String(
    Encoding.UTF8.GetBytes($"upload:{uploadId}:{index:D6}"));

await blob.StageBlockAsync(blockId, request.Body, cancellationToken);

The Azure.Storage.Blobs SDK handles streaming and transient retries. Configure request limits for the chosen chunk plus protocol overhead, and never read Request.Body into a byte array. Validate the declared length and reject indexes outside the agreed range before staging, preventing clients from creating invalid blocks. Attach a correlation identifier to every request and retain it with the upload session for support and audit work.

At completion, reconstruct the ordered block-ID list and call CommitBlockListAsync, optionally with an If-None-Match condition so an existing object is not overwritten. Update the session only after Azure confirms the commit. If the process stops between those actions, background reconciliation can compare session state, the committed list and the blob ETag. This covers partial business operations as well as network faults.

Securing files and meeting Australian obligations

Treat the upload endpoint as an authenticated business operation. Require a tenant-scoped identity, confirm that the caller may write to the destination, and apply per-user or per-tenant storage quotas. Never derive authorisation from a client-supplied file name. For direct Azure uploads, a user-delegated SAS can be limited to one blob, a short expiry and write-only actions, while the application issues final download links.

Validate file names and extensions, enforce size and media-type policies, and scan content for malware before other users can access it. A declared media type is useful metadata but does not prove the contents. Store a server-calculated checksum and compare it with the completed payload. Rate limits should protect both the API and Azure transactions, and audit records should identify who initiated, changed or downloaded an object.

Privacy duties depend on the information in the files. Organisations handling Australian personal information may need to follow the Australian Privacy Principles under the Privacy Act 1988, including security and accountability, and assess whether a serious data breach is notifiable. Health information can also trigger Victorian or Queensland health-records legislation. Define the purpose, retention period and deletion rules, encrypt data in transit and at rest, keep secrets in Azure Key Vault, and exclude sensitive data from logs. Residency, contracts and technical controls must be reviewed together.

Running the service in production

Production telemetry should join the API request, upload session and Azure operation. Track chunk acceptance rate, retry count, time to first byte, completion duration, abandoned sessions and storage transactions. Azure Monitor and Application Insights can reveal gateway throttling, client disconnects and failing regions. Correlate these signals with deployment versions so a regression can be identified before users abandon large uploads.

Capacity and cost need separate models. Application compute grows with concurrent chunks, object storage grows with retained bytes, and transaction and egress charges can vary with traffic. For an Australian business case, express those costs in Australian dollars, show GST separately and compare peak regional demand rather than average throughput. Teams using a local managed-service provider still need the same identity, monitoring and recovery controls.

Three deployment patterns make the operational trade-offs visible, with each shifting validation and network load to a different layer:

Approach Failure recovery Application load Main trade-off Strong fit
Single request through the app Low; one timeout can discard the upload Highest sustained body and memory pressure Simple to implement but poorly suited to very large files Small files and trusted networks
App-mediated chunks High; each part retries independently Moderate compute, with every byte crossing the API Requires endpoints, session state and reconciliation Strict validation, malware scanning or audit control is required
Direct chunks with SAS High; Azure receives each part directly Lowest compute and bandwidth use Requires carefully scoped SAS, CORS and client support Large files, consumer uploads and high concurrency

The Leela Ambience Convention Hotel

1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032

KNOW MORE

GENERAL QUERIES


Manish Tewatia

+91-9718-431-042

TICKET QUERIES


Atul Gupta

+91-9910-125-804