Open Closed

AI Management Blazor playground crashes when restored conversation contains null markdown content #10581


User avatar
0
AyazNaseer created

Hi,

After upgrading our solution to ABP 10.2, we encountered a crash in the AI Management Blazor playground.

Problem: When opening the AI Management workspace playground, the page crashes during rendering with:

System.ArgumentNullException: Value cannot be null. (Parameter 'markdown')

Observed behavior:

  • If I clear browser local storage / site data for the app origin and open the playground again, the issue disappears and the page works normally.
  • This suggests the crash is related to restored conversation history containing a chat message with null markdown/text content.

The AI Management chat component restores conversation history from browser storage In ABP 10.2, chat responses can include tool-call style data separately from text A restored message with null content appears to be passed to Markdig without a null check

Expected behavior: The component should safely handle null or empty message content and should not crash the Blazor circuit.

Actual behavior: The Blazor circuit crashes while rendering the AI Management playground.

Environment:

ABP Framework: 10.2.0 UI: Blazor Server Module: AI Management

Workaround: Clear browser local storage / site data for the application origin, then reopen the playground.

Could you please confirm whether this is a known issue or whether there is already an internal fix planned for a future version?

Thanks.

  • Template: app
  • Created ABP Studio Version: 2.2.1
  • Current ABP Studio Version: 2.2.6
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Theme Menu Placement: side
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: No
  • Mobile Framework: maui
  • Public Website: No
  • Social Login: No
  • Include Tests: Yes
  • Kubernetes Configuration: No
  • Distributed Event Bus: none
  • Use Local References: No
  • Optional Modules:
    • GDPR
    • FileManagement
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • OpenIddictAdmin
  • Selected Languages: English, Arabic, Chinese (Simplified), Chinese (Traditional), Czech, English (United Kingdom), Finnish, French, German (Germany), Hindi , Hungarian, Icelandic, Italian, Portuguese (Brazil), Romanian (Romania), Russian, Slovak, Spanish, Swedish, Turkish
  • Default Language: English
  • Exception message and full stack trace:

System.ArgumentNullException: Value cannot be null. (Parameter 'markdown') at Markdig.Helpers.ThrowHelper.ArgumentNullException_markdown() at Markdig.Markdown.ToHtml(String markdown, MarkdownPipeline pipeline, MarkdownParserContext context) at Volo.AIManagement.Client.Blazor.Components.ChatClientChat.kkErlSOPW(RenderTreeBuilder) at Blazorise.CardBody.<BuildRenderTree>b__5_0(RenderTreeBuilder __builder2) at Microsoft.AspNetCore.Components.CascadingValue`1.Render(RenderTreeBuilder builder) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)

[2026-04-09T14:03:57.225Z] Error: System.ArgumentNullException: Value cannot be null. (Parameter 'markdown') at Markdig.Helpers.ThrowHelper.ArgumentNullException_markdown() at Markdig.Markdown.ToHtml(String markdown, MarkdownPipeline pipeline, MarkdownParserContext context) at Volo.AIManagement.Client.Blazor.Components.ChatClientChat.kkErlSOPW(RenderTreeBuilder) at Blazorise.CardBody.

Secondary browser/client-side error after the Blazor circuit breaks:

Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State. at Mn.send (blazor.web.js:1:87196) at Cn._sendMessage (blazor.web.js:1:64679) at Cn._sendWithProtocol (blazor.web.js:1:64769) at Cn.send (blazor.web.js:1:64877) at Ho.beginInvokeDotNetFromJS (blazor.web.js:1:145009) at b.invokeDotNetMethodAsync (blazor.web.js:1:5328) at I.invokeMethodAsync (blazor.web.js:1:7117) at closable.js?v=2.0.4.0:59:32 at new Promise (<anonymous>) at tryClose (closable.js?v=2.0.4.0:58:19)

  • Steps to reproduce the issue:
  1. Upgrade the solution to ABP 10.2.
  2. Run the Blazor Server application.
  3. Open the AI Management workspace playground.
  4. Have an existing saved conversation/history in browser storage for the playground.
  5. Reopen the playground page so the conversation is restored automatically.
  6. The page crashes during rendering with: System.ArgumentNullException: Value cannot be null. (Parameter 'markdown')
Markdown supported.
Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)

4 Answer(s)
  • User Avatar
    0
    AI-Bot created
    Support Team ABP Agent
    • This looks like a real bug in the AI Management Blazor ChatClientChat component (ABP 10.2.0): when it restores chat history from browser local storage, at least one stored message can have null text/markdown, and the component ends up calling Markdig with a null string (Markdown.ToHtml(null, ...)), which throws System.ArgumentNullException (markdown) and breaks the Blazor circuit.

    • Your workaround (clearing site data/local storage) is consistent with this: it removes the persisted conversation that contains a null-content message.

    • There is no verified public fix note/ticket I can point to for ABP 10.2.0 specifically (and I can’t access the commercial source here to confirm whether it’s already patched internally). Practically, until you update to a version where this is fixed, the only deterministic mitigations are:

      1. Avoid restoring the problematic conversation by changing ConversationId (e.g., include a version suffix like "...-v2" so a new local-storage key is used), or
      2. Clear the stored conversation (your current workaround).
    • If you embed the widget yourself (not the built-in playground page), you can also make it resilient by ensuring you never pass a null markdown string into a markdown renderer (i.e., normalize null to "" before rendering). The crash indicates the playground’s own rendering path is missing that guard.

    Sources:

    • https://abp.io/docs/10.2//modules/ai-management/ (the component persists/restores chat via ConversationId)
    • https://abp.io/support/questions/2028 (ABP team previously acknowledged the same Markdig null-markdown exception pattern as an “unexpected behavior” to be fixed)

    This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    You can follow https://github.com/abpframework/abp/issues/25228

    I have refunded your ticket.

    Thanks.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    AyazNaseer created

    Thanks.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    : )

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.8.0-preview. Updated on September 16, 2026, 14:50
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.