You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET C# MVC:不使用数据库存储用户数据的替代方案咨询

Hey Sarah, great question—let’s walk through some practical, cost-effective alternatives for your ASP.NET MVC project since you don’t want to store user data in a database or keep PDFs locally long-term:

可行方案选项

1. 即时生成并直接交付给用户(零存储)

This is the most straightforward approach: generate the PDF on-the-fly when the user submits their config, then send it directly to their browser for download without saving it anywhere. No storage costs, no cleanup needed.

Here’s a quick example using iTextSharp (a popular PDF library for .NET):

public ActionResult GenerateAndDownloadPdf(ComputerConfig model)
{
    // Initialize PDF document and memory stream
    var document = new Document();
    var memoryStream = new MemoryStream();
    PdfWriter.GetInstance(document, memoryStream);
    
    document.Open();
    
    // Add your logo to the PDF
    var logoPath = Server.MapPath("~/Content/your-brand-logo.png");
    var logo = Image.GetInstance(logoPath);
    logo.ScaleToFit(120, 120); // Adjust size as needed
    document.Add(logo);
    document.Add(new Paragraph("\n")); // Add spacing
    
    // Insert user's computer config details
    document.Add(new Paragraph($"**CPU:** {model.CpuModel}"));
    document.Add(new Paragraph($"**RAM:** {model.RamSize} GB"));
    document.Add(new Paragraph($"**Storage:** {model.StorageType} {model.StorageSize} GB"));
    // Add other config fields as needed
    
    document.Close();
    memoryStream.Position = 0; // Reset stream position
    
    // Return the PDF directly to the user for download
    return File(
        memoryStream, 
        "application/pdf", 
        $"Your-Config-Report_{DateTime.Now:yyyyMMddHHmmss}.pdf"
    );
}

Pros: No storage costs, no data retention concerns, instant delivery to users.
Best for: Scenarios where you don’t need to retain copies of the PDF after the user downloads it.

2. 临时云存储(自动到期清理)

If you want users to be able to re-download the PDF for a short window (e.g., 24 hours), use a cloud storage service with auto-expiring blobs. Services like Azure Blob Storage or AWS S3 let you set a time-to-live (TTL) for files, so they automatically delete after your chosen period—no manual cleanup required.

Example with Azure Blob Storage:

public async Task<ActionResult> GenerateAndStoreTemporaryPdf(ComputerConfig model)
{
    // First, generate the PDF into a MemoryStream (same logic as option 1)
    var memoryStream = GeneratePdfStream(model);
    
    // Upload to Azure Blob Storage with 24-hour expiry
    var blobServiceClient = new BlobServiceClient("your-azure-storage-connection-string");
    var containerClient = blobServiceClient.GetBlobContainerClient("temp-config-reports");
    var blobName = $"config-report-{Guid.NewGuid()}.pdf";
    var blobClient = containerClient.GetBlobClient(blobName);
    
    await blobClient.UploadAsync(memoryStream, overwrite: true);
    
    // Set auto-delete after 24 hours
    var expiryTime = DateTimeOffset.UtcNow.AddHours(24);
    await blobClient.SetHttpHeadersAsync(new BlobHttpHeaders
    {
        Expires = expiryTime
    });
    
    // Generate a temporary download link for the user
    var downloadUri = blobClient.GenerateSasUri(
        BlobSasPermissions.Read,
        expiryTime
    ).ToString();
    
    // Redirect user to the download link or return it as a JSON response
    return Redirect(downloadUri);
}

// Helper method to generate PDF stream (reuse from option 1)
private MemoryStream GeneratePdfStream(ComputerConfig model)
{
    var document = new Document();
    var stream = new MemoryStream();
    PdfWriter.GetInstance(document, stream);
    
    document.Open();
    // Add logo and config content here...
    document.Close();
    stream.Position = 0;
    return stream;
}

Pros: Low cost (only pay for short-term storage), users can re-download if needed, no manual cleanup.
Best for: Scenarios where you want to offer temporary access to the generated PDF.

3. 仅存储配置元数据,按需重新生成PDF

If you need to keep a record of user submissions but don’t want to store full PDFs, save just the user’s config data (as JSON or plain text) in a low-cost, lightweight storage service (like Azure Table Storage, AWS DynamoDB, or even a simple flat-file store). When you need to retrieve a report, pull the metadata and regenerate the PDF on-the-fly.

Example using JSON serialization and Azure Table Storage:

// When user submits config: store metadata
public async Task<ActionResult> SaveConfigAndGeneratePdf(ComputerConfig model)
{
    // Serialize config to JSON
    var configJson = JsonConvert.SerializeObject(model);
    
    // Store in Azure Table Storage
    var tableClient = new TableClient("your-storage-connection-string", "user-configs");
    await tableClient.CreateIfNotExistsAsync();
    
    var tableEntity = new TableEntity(
        partitionKey: "config-submissions",
        rowKey: Guid.NewGuid().ToString()
    )
    {
        ["ConfigData"] = configJson,
        ["SubmittedAt"] = DateTime.UtcNow
    };
    
    await tableClient.UpsertEntityAsync(tableEntity);
    
    // Generate and download PDF immediately (same as option 1)
    var pdfStream = GeneratePdfStream(model);
    return File(pdfStream, "application/pdf", $"Your-Config-Report.pdf");
}

// Later, if you need to regenerate the PDF:
public async Task<ActionResult> RegeneratePdf(string rowKey)
{
    var tableClient = new TableClient("your-storage-connection-string", "user-configs");
    var entity = await tableClient.GetEntityAsync<TableEntity>("config-submissions", rowKey);
    
    // Deserialize stored config back to your model
    var savedConfig = JsonConvert.DeserializeObject<ComputerConfig>(entity["ConfigData"].ToString());
    
    // Regenerate PDF and return it
    var pdfStream = GeneratePdfStream(savedConfig);
    return File(pdfStream, "application/pdf", $"Regenerated-Config-Report.pdf");
}

Pros: Minimal storage costs (metadata is tiny compared to PDFs), you retain a record of submissions, and can generate reports anytime.
Best for: Scenarios where you need to keep a history of user configs but don’t want to store permanent copies of PDFs.


内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:18:09