HttpWebRequest 复制大文件并找不到 404
HttpWebRequest copy big file and get 404 not found
我复制小文件没有问题。
当用户尝试上传大尺寸文件(我猜 > 60MB)时,我遇到了网络异常(404 未找到)。
我很确定问题出在文件大小上。我在
遇到异常
webRequest.GetResponse()
我需要修改服务器端吗?
任何建议都将不胜感激。
public static bool UploadFile(IResult result, string pathFile, Stream stream)
{
// upload effettivo del file su DB
HttpWebRequest webRequest = WebRequest.Create(ClientCommon.Properties.Settings.Default.FileServiceURI) as HttpWebRequest;
HttpWebResponse response = null;
Stream s = null;
try
{
webRequest.Method = WebRequestMethods.Http.Post;
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.KeepAlive = true;
using (WebRequestBuilder wrb = new WebRequestBuilder())
{
webRequest.ContentType = wrb.ContentType;
wrb.AddTextPart("cdFile", pathFile);
wrb.AddFilePart("file", stream);
wrb.AddTextPart("destination", pathFile);
if (wrb.GetContent(result, out s) == false)
return false;
s.CopyTo(webRequest.GetRequestStream());
}
response = webRequest.GetResponse() as HttpWebResponse;
return true;
}
catch (WebException exc)
{
result.SetError(exc.Message);
return false;
}
finally
{
if (response != null)
response.Close();
if (s != null)
// When the above code has ended, close the streams
s.Close();
}
}
尝试在您的 web.config
.
中添加以下代码
<system.web>
<!-- Your other settings here -->
<httpRuntime targetFramework="Your Framework" maxRequestLength="2147483647" />
</system.web>
<system.webServer>
<!-- Your other settings here -->
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
maxRequestLength: 属性 maxRequestLength 表示 ASP.NET 支持的最大文件上传大小。此限制可用于防止因用户向服务器发布大文件而引起的拒绝服务攻击。指定的大小以千字节为单位。默认值为 4096 KB (4 MB)。 Here 您可以阅读有关 maxRequestLength
的更多信息。
maxAllowedContentLength: 指定对 Web 服务器处理的请求的限制。 Here 您可以阅读有关 maxAllowedContentLength
的更多信息。
通过上面的代码,您可以接收最大 2GB 的文件。你可以根据你的需要修改它
我复制小文件没有问题。 当用户尝试上传大尺寸文件(我猜 > 60MB)时,我遇到了网络异常(404 未找到)。
我很确定问题出在文件大小上。我在
遇到异常webRequest.GetResponse()
我需要修改服务器端吗? 任何建议都将不胜感激。
public static bool UploadFile(IResult result, string pathFile, Stream stream)
{
// upload effettivo del file su DB
HttpWebRequest webRequest = WebRequest.Create(ClientCommon.Properties.Settings.Default.FileServiceURI) as HttpWebRequest;
HttpWebResponse response = null;
Stream s = null;
try
{
webRequest.Method = WebRequestMethods.Http.Post;
webRequest.Credentials = CredentialCache.DefaultCredentials;
webRequest.KeepAlive = true;
using (WebRequestBuilder wrb = new WebRequestBuilder())
{
webRequest.ContentType = wrb.ContentType;
wrb.AddTextPart("cdFile", pathFile);
wrb.AddFilePart("file", stream);
wrb.AddTextPart("destination", pathFile);
if (wrb.GetContent(result, out s) == false)
return false;
s.CopyTo(webRequest.GetRequestStream());
}
response = webRequest.GetResponse() as HttpWebResponse;
return true;
}
catch (WebException exc)
{
result.SetError(exc.Message);
return false;
}
finally
{
if (response != null)
response.Close();
if (s != null)
// When the above code has ended, close the streams
s.Close();
}
}
尝试在您的 web.config
.
<system.web>
<!-- Your other settings here -->
<httpRuntime targetFramework="Your Framework" maxRequestLength="2147483647" />
</system.web>
<system.webServer>
<!-- Your other settings here -->
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
maxRequestLength: 属性 maxRequestLength 表示 ASP.NET 支持的最大文件上传大小。此限制可用于防止因用户向服务器发布大文件而引起的拒绝服务攻击。指定的大小以千字节为单位。默认值为 4096 KB (4 MB)。 Here 您可以阅读有关 maxRequestLength
的更多信息。
maxAllowedContentLength: 指定对 Web 服务器处理的请求的限制。 Here 您可以阅读有关 maxAllowedContentLength
的更多信息。
通过上面的代码,您可以接收最大 2GB 的文件。你可以根据你的需要修改它