gpt4 book ai didi

c# - 将大文件上传到 Azure 数据库会出现错误(ASP.NET 网站)

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:45 24 4
gpt4 key购买 nike

我创建了一个简单的 asp.net 网站。只有 1 个页面,有一个文件上传控件和一个上传按钮。它应该是这样工作的:当用户浏览到文件并单击“上传”时,它会将实际文件保存到我的 AZURE 数据库中的新记录中。

对于小文件,它工作得很好。对于较大的文件,例如 45mb,会出现以下错误......

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period 
elapsed prior to completion of the operation or the server is not responding.
---> System.ComponentModel.Win32Exception (0x80004005):

在我的 web.config 中,我已经添加了以下片段......

<httpRuntime maxRequestLength="102400000" 
requestValidationMode="2.0" executionTimeout="12000" />
</system.web>

还有……

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>

知道会发生什么吗?我缺少什么?由于这是 Azure 数据库,我还需要任何其他配置吗?

示例上传代码....

    Dim filename As String = Path.GetFileName(FileUpload1.PostedFile.FileName)
Dim contentType As String = FileUpload1.PostedFile.ContentType
Using fs As Stream = FileUpload1.PostedFile.InputStream
Using br As New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(fs.Length)
Dim constr As String = ConfigurationManager.ConnectionStrings("MyDb").ConnectionString
Using con As New SqlConnection(constr)
Dim query As String = "insert into MyFileTable values (@ActualDocument, @Filename)"
Using cmd As New SqlCommand(query)
cmd.Connection = con
cmd.Parameters.Add("@ActualDocument", SqlDbType.Binary).Value = bytes
cmd.Parameters.Add("@Filename", SqlDbType.VarChar).Value = filename
con.Open()
Dim i As Integer = cmd.ExecuteNonQuery()
Response.Write(i & " records<br/>")
con.Close()
End Using
End Using
End Using
End Using

最佳答案

IIS 7 的上限为 30 MB,请参阅 this link for more info 。原因是在上传过程中,ASP.NET 在用户将文件保存到磁盘或进一步处理之前将整个文件加载到内存中 - 换句话说,没有流式传输。您可以尝试将以下内容添加到 Azure Role Startup Task :

appcmd set config "My Site/MyApp" -section:requestFiltering -requestLimits.maxAllowedContentLength:104857600 -commitpath:apphost

超出 IIS 30 MB 限制,但我自己没有尝试过。

关于c# - 将大文件上传到 Azure 数据库会出现错误(ASP.NET 网站),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com