如何使用 Blazor 客户端应用程序在服务器上创建新文件?

How to create a new file on the server with blazor client-side application?

我正在尝试通过单击客户端页面上的按钮在 Web 服务器上创建一个新文件。

浏览器控制台仅显示 "WASM: File created." 但不显示任何有关文件操作的错误或警告。

路径/wwwroot下也没有任何新文件。

Blazor 服务器 运行 在本地主机 (Win10) 上作为管理员。

Index.razor内容;

@page "/"

<h1>Demo1</h1>

<button type="submit" @onclick="CreateFile.Run">Create A New File</button>

@code 
{
    public class CreateFile
    {

        public static void Run()
        {
            System.IO.File.WriteAllText("test.txt", "hello world");
            System.IO.File.WriteAllText(@"C:\VS Code Projects\Demo1\Client\wwwroot\samplefile.txt", "content 123");
            Console.WriteLine("File created.");

        }
    }
}

这是不可能的。您的代码在客户端而不是服务器上 运行,并且您无权访问客户端上的文件系统。

如果你想做这样的事情,你需要使用 Blazor 服务器应用程序而不是 Blazor WebAssembly 应用程序。

此消息:"WASM: File created." 表示您正在使用 Blazor WebAssembly 应用程序,对吧?浏览器不应允许您在客户端上创建文件。这只是您的代码生成的消息。

理解这一点:当您按下按钮时,会发生正常的 post 返回,因为按钮的类型是 'submit'。 return到调用页面后,我猜是触发了点击事件(不确定但可能是这样),然后执行运行方法中的代码显示消息"WASM: File created."

了解这一点:您已经创建了一个托管的 Blazor WebAssembly 应用服务器。这是一个单页应用程序,它应该通过 Web Api 或 SignleR 与您的服务器通信。你不能使用post backs,你需要了解Blazor的两种执行模式是如何工作的。