Blazor文件上载在IIS部署后不工作

flseospp  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(350)

我用这段代码上传文件到blazor服务器项目

private async Task uploadFile(InputFileChangeEventArgs e, ClaimDetailDTO claimDetail)//Uploads file to server
{
    var file = e.File;
    if (file.Size > maxFileSize)
    {
        FilePopupVisible = true;
    }
    else
    {
        isLoading = true;
        loadedFiles.Clear();
        progressPercent = 0;
        try
        {
            trustedFileName = claimDetail.ClaimDetailId.ToString() + file.Name.Substring(file.Name.IndexOf('.'));
            string rootPath = @"C:\inetpub\wwwroot\Claims Blazor\Claim Attachments\";
            var path = Path.Combine(rootPath, trustedFileName);

            await using FileStream writeStream = new(path, FileMode.Create);
            using var readStream = file.OpenReadStream(maxFileSize);
            var bytesRead = 0;
            var totalRead = 0;
            var buffer = new byte[1024 * 10];

            while ((bytesRead = await readStream.ReadAsync(buffer)) != 0)
            {
                totalRead += bytesRead;

                await writeStream.WriteAsync(buffer, 0, bytesRead);

                progressPercent = Decimal.Divide(totalRead, file.Size);

                StateHasChanged();
            }
            loadedFiles.Add(file);
            claimDetail.HasAttachement = true;
        }
        catch (Exception ex)
        {
            _logger.LogError("File: {Filename} Error: {Error}",
                file.Name, ex.Message);
        }
        isLoading = false;
    }
}

在部署到IIS服务器后,上传似乎不起作用。日志中没有错误消息,所以我不认为它触发了异常。任何人都知道问题可能在哪里。

v440hwme

v440hwme1#

根据你的描述,如果你的代码没有问题,我猜下面的原因可能会导致问题,你可以检查一下。
IIS用户账号可能没有权限上传文件到服务器,需要检查上传文件所在目录的权限,并确保IIS用户账号有写权限
此外,如果您尝试上传的文件太大,则上传可能会失败,因为IIS的默认最大文件大小限制为30 MB。当然,您可以通过修改web.config文件中的maxAllowedContentLength设置来增加文件大小限制。
也可能是服务器的防火墙阻止了文件上载请求。您需要检查防火墙设置或网络限制。

相关问题