C# 即使上载请求超时,文件仍显示在目标中
给定以下代码C# 即使上载请求超时,文件仍显示在目标中,c#,sharepoint,httpwebrequest,C#,Sharepoint,Httpwebrequest,给定以下代码 public static void Upload(Uri target, Stream content) { var request = (HttpWebRequest)WebRequest.Create(target); request.UseDefaultCredentials = true; request.Method = WebRequestMethods.Http.Put; request.ContentType = "applicat
public static void Upload(Uri target, Stream content)
{
var request = (HttpWebRequest)WebRequest.Create(target);
request.UseDefaultCredentials = true;
request.Method = WebRequestMethods.Http.Put;
request.ContentType = "application/octet-stream";
using (Stream requestStream = request.GetRequestStream())
{
content.CopyTo(requestStream);
}
using (var response = (HttpWebResponse)request.GetResponse())
{
}
}
我看到了我在特定场景中没有预料到的结果
我的上载请求的目标是SharePoint系统,如果我上载的文件足够大,导致请求超时,则会抛出WebException
,并显示消息“操作超时”。到目前为止一切都很好
奇怪的是,如果我重新运行相同的代码(即使是在一个新的进程中),那么在它再次失败并出现另一个超时后,文件实际上会出现在目标中。它似乎没有被破坏或部分上传,因为我可以下载它,它似乎完全完好无损
在创建请求时,我是否应该指定一些其他内容来防止这种情况发生?我知道我可以通过在超时的情况下执行仅头部请求来解决这个问题,以验证文件是否确实是由它组成的,但如果可能的话,我更喜欢更健壮的文件。也许您可以尝试修改web配置文件
这是我的网站配置httpRuntime。您可以修改执行超时
希望这能有所帮助。最佳方法-使用Sharepoint web界面。
在“管理中心”的“应用程序管理”中,单击“管理web应用程序”。
选择应用程序(例如SharePoint-80)。
在Web应用程序功能区上,单击“常规设置”按钮上的向下箭头。
单击常规设置。
滚动至最大上载大小。
将属性设置为与Excel Services中最大工作簿大小相同的数字。
单击“确定”。
但超时并不是真正的问题-上传失败是完全正确的。只是上传成功时抛出异常的行为给我带来了问题。我遇到了完全相同的问题,你解决过这个问题吗?如果你做了,你是怎么做的?