3

给定以下代码;

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抛出 a(如预期的那样)并显示“操作超时”消息。到目前为止一切都很好。

奇怪的是,如果我重新运行相同的代码(即使在新进程中),然后在它再次超时并再次失败后,该文件实际上出现在目标中。它似乎也没有损坏或部分上传,因为我可以下载它并且它似乎完好无损。

在创建我的请求时我应该指定其他什么东西来防止这种情况发生?我知道我可以通过在超时的情况下仅执行 HEAD 请求来解决此问题,以验证文件是否确实由它组成,但如果可能的话,我更喜欢更健壮的东西。

4

2 回答 2

1

也许您可以尝试修改网络配置文件。

<httpRuntime executionTimeout="1200" maxRequestLength="2097151" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />

那是我的网站网络配置 httpRuntime。您也许可以修改执行超时。

希望这可以帮助。

于 2013-11-19T01:41:42.317 回答
0

最好的方法 - 使用 Sharepoint Web 界面。

在管理中心的应用程序管理中,单击管理 Web 应用程序。
选择应用程序(例如,SharePoint - 80)。
在 Web 应用程序功能区上,单击常规设置按钮上的向下箭头。
单击常规设置。
滚动到最大上传大小。
将该属性设置为与 Excel Services 中的最大工作簿大小相同的数字。
单击确定。

于 2013-11-22T19:50:40.690 回答