我正在做一个项目,试图在我的公司抓取一个 Intranet 站点,因为现在有一些限制阻止我在服务器端获得帮助。我正在编写一个使用 axWebBrowser 控件导航到页面的 C# 客户端。进入页面后,有一个按钮控件调用 .aspx 页面,该页面从 sql 查询创建 csv 文件的动态下载。在正常情况下,这会打开一个 FileDownload 对话框来保存 csv。
我发现人们使用 BeforeNavigate2 事件捕获 e.uRL,然后使用 FileDownload 事件覆盖对话框并使用 WebClient 检索文件的示例。除了 e.uRL 包含 .aspx 脚本的 url 而不是动态创建的 .csv 文件之外,此方法对我来说可以正常工作。
我读到的另一个建议是从 HTML 请求中解析文件路径的标题,但是当我这样做时,我在标题上抛出了 401 Unauthorized Access 异常。
最后,如果可能的话,我更愿意避免这种情况,我考虑过使用 win32 api 调用并使用 FindWindow 和 SendMessage 浏览默认文件对话框,但我真的不想创建一个等待顺序的多线程应用程序去做这个。我找不到 FileDownload 对话框打开时触发的事件,只有在打开之前或关闭之后触发的事件。
您可能有的任何想法都会很棒,如果它澄清了我的解释,我可以开始在此处粘贴我到目前为止所拥有的代码。