C# SSIS WebClient()下载文件脚本任务问题

C# SSIS WebClient()下载文件脚本任务问题,c#,sql-server,ssis,webclient-download,C#,Sql Server,Ssis,Webclient Download,我想知道是否有人能帮我解决这个问题。我不熟悉在SSIS包中使用脚本任务,无法找到此问题的解决方案。所以我创建了这个脚本任务来从Web门户下载一个文件。这个软件包在几个月内运行良好,但突然间,它开始失败。原因是,url再次被定向到Web门户的身份验证页面(看起来客户端可能已更改其网站的安全设置或其他内容)。因此,现在正在下载一个空白文件。 下面是我在脚本任务中使用的代码。是否有一个代码,我可以添加到下面的脚本,以通过身份验证页,因为我已经在下面的脚本发送用户名和密码。还有一点需要补充的是,当我将u

我想知道是否有人能帮我解决这个问题。我不熟悉在SSIS包中使用脚本任务,无法找到此问题的解决方案。所以我创建了这个脚本任务来从Web门户下载一个文件。这个软件包在几个月内运行良好,但突然间,它开始失败。原因是,url再次被定向到Web门户的身份验证页面(看起来客户端可能已更改其网站的安全设置或其他内容)。因此,现在正在下载一个空白文件。 下面是我在脚本任务中使用的代码。是否有一个代码,我可以添加到下面的脚本,以通过身份验证页,因为我已经在下面的脚本发送用户名和密码。还有一点需要补充的是,当我将url复制并粘贴到Chrome中时,我可以手动下载该文件,这意味着数据文件确实存在于门户中,只是脚本任务再次被重定向到身份验证页面,因此失败了。提前谢谢

    public void Main()
    {
        // TODO: Add your code here

        WebClient wc = new WebClient();// { UseDefaultCredentials = true };
        var DownloadPath = Dts.Variables["User::varDownloadPathNew"].Value.ToString();
        DateTime startDate = DateTime.Parse(Dts.Variables["User::StartDate"].Value.ToString());
        DateTime enddate = DateTime.Parse(Dts.Variables["User::EndDate"].Value.ToString());

        wc.Credentials = new NetworkCredential("UserName", "Password");
        wc.DownloadFile("https://Test123.co.uk/model/download?&startfilter=" + startDate.ToString("dd") + "%2F" + startDate.ToString("MM") + "%2F" + startDate.ToString("yyyy") + "&mnu_jobdateendfilter=" + enddate.ToString("dd") + "%2F" + enddate.ToString("MM") + "%2F" + enddate.ToString("yyyy") + "&%A6&maxrows=400&format=excel&filename=Test.xls", DownloadPath);

        Dts.TaskResult = (int)ScriptResults.Success;

    }

将下面的代码添加到我的原始代码中解决了这个问题。正如@billinkc it所建议的,门户使用cookies进行身份验证,所以我从ie/chrome中检查cookie用户名和密码(在我的例子中,门户使用了2个cookie名称和密码,所以我同时使用了这两个),然后在下面的代码wc.Headers.Add中使用它(HttpRequestHeader.cookie,“cookiename=password”)


听起来,在访问“实际”站点之前,您需要一个身份验证cookie集。也许是这样的谢谢你的帮助@billinkc。非常感谢。看起来这可能是我需要的解决方案。正如我在上面的帖子中提到的,我对脚本任务还不熟悉,所以我只需要具备基本的知识。你知道我该如何将这个认证cookie容器安装到我的上述代码中吗。谢谢
public void Main()
{
    // TODO: Add your code here

    WebClient wc = new WebClient();// { UseDefaultCredentials = true };
    wc.Headers.Add(HttpRequestHeader.Cookie, "NSC_JOmbbd3tb4=ffffffffc3a03f7e45525; User=eyJhbGciOiJSU");
    var DownloadPath = Dts.Variables["User::varDownloadPathNew"].Value.ToString();
    DateTime startDate = DateTime.Parse(Dts.Variables["User::StartDate"].Value.ToString());
    DateTime enddate = DateTime.Parse(Dts.Variables["User::EndDate"].Value.ToString());

    wc.Credentials = new NetworkCredential("UserName", "Password");
    wc.DownloadFile("https://Test123.co.uk/model/download?&startfilter=" + startDate.ToString("dd") + "%2F" + startDate.ToString("MM") + "%2F" + startDate.ToString("yyyy") + "&mnu_jobdateendfilter=" + enddate.ToString("dd") + "%2F" + enddate.ToString("MM") + "%2F" + enddate.ToString("yyyy") + "&%A6&maxrows=400&format=excel&filename=Test.xls", DownloadPath);

    Dts.TaskResult = (int)ScriptResults.Success;

}