在 asp.net 网络表单中获取消息的网页导航被取消

Posted

技术标签:

【中文标题】在 asp.net 网络表单中获取消息的网页导航被取消【英文标题】:Navigation to the webpage was canceled getting message in asp.net web form 【发布时间】:2019-12-27 09:06:26 【问题描述】:

当我将 aspx 页面下载为图像格式时,在下载的图像中出现错误消息,但本地主机每个人都认为只有在上传到实时服务器然后下载的文件才能正常工作,然后下载的文件被下载,但内部文件消息不是我的 aspx 数据显示.

Navigation to the webpage was canceled

下面是我下载的带有消息的图片文件

我正在尝试使用 win 表单 WebBrowser 控件来缩短网页的屏幕,下面是我的代码

下面是为文本框分配 URL 以供下载的代码

  protected void Page_Load(object sender, EventArgs e)


   txtweburl.Text = "http://example.com/dicdownload.aspx?VisitedId=DIC_V00025";

 

下面是使用线程生成屏幕的代码

  protected void btnscreenshot_click(object sender, EventArgs e)
  
    //  btnscreenshot.Visible = false;
    allpanels.Visible = true;
    Thread thread = new Thread(GenerateThumbnail);
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();
    thread.Join();



private void GenerateThumbnail()

    //  btnscreenshot.Visible = false;
    WebBrowser webrowse = new WebBrowser();
    webrowse.ScrollBarsEnabled = false;
    webrowse.AllowNavigation = true;
    string url = txtweburl.Text.Trim();
    webrowse.Navigate(url);
    webrowse.Width = 1400;
    webrowse.Height = 50000;

    webrowse.DocumentCompleted += webbrowse_DocumentCompleted;
    while (webrowse.ReadyState != WebBrowserReadyState.Complete)
    
        System.Windows.Forms.Application.DoEvents();
    

在下面的代码中,我在下载删除同一个文件后保存图像文件

        private void webbrowse_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    // btnscreenshot.Visible = false;
    string folderPath = Server.MapPath("~/ImageFiles/");

    WebBrowser webrowse = sender as WebBrowser;
    //Bitmap bitmap = new Bitmap(webrowse.Width, webrowse.Height);

    Bitmap bitmap = new Bitmap(webrowse.Width, webrowse.Height, PixelFormat.Format16bppRgb565);

    webrowse.DrawToBitmap(bitmap, webrowse.Bounds);


    string Systemimagedownloadpath = System.Configuration.ConfigurationManager.AppSettings["Systemimagedownloadpath"].ToString();
    string fullOutputPath = Systemimagedownloadpath + Request.QueryString["VisitedId"].ToString() + ".png";
    MemoryStream stream = new MemoryStream();
    bitmap.Save(fullOutputPath, System.Drawing.Imaging.ImageFormat.Jpeg);


    // You should put more appropriate MIME type as per your file time - perhaps based on extension
    Response.ContentType = "application/octate-stream";
    Response.AddHeader("content-disposition", "attachment;filename=" + Request.QueryString["VisitedId"].ToString() + ".png");
    // Start pushing file to user, IIS will do the streaming.
    Response.TransmitFile("~/ImageFiles/" + Request.QueryString["VisitedId"].ToString() + ".png");
    Response.Flush();//Won't get error with Flush() so use this Instead of End()
    var filePath = Server.MapPath("~/ImageFiles/" + Request.QueryString["VisitedId"].ToString() + ".png");
    if (File.Exists(filePath))
    
        File.Delete(filePath);
    



本地主机一切正常,但在实时下载带有该消息的图像时

我也检查了以下解决方案

https://support.microsoft.com/en-in/help/967941/navigation-is-canceled-when-you-browse-to-web-pages-that-are-in-differ

IIS configuration: Navigation to the webpage was canceled when converting page to PDF using SautinSoft.PdfVision

【问题讨论】:

我的网络团队说它的代码错误,但我告诉他们这个网络安全问题,可以告诉我确切的问题是什么意味着什么类型的权限问题。 @RamAnugandula 但是代码在本地主机上运行良好。 @RamAnugandula 此保护模式已启用设置我必须在服务器系统或客户端计算机中执行,客户端计算机已经执行但未到来。 @RamAnugandula 我们在 windows 10 机器上,并且可以使用 EDge 浏览器。 @RamAnugandula 从 IIS 托管的 ASP.NET 应用程序中使用 WebBrowser 控件并不是一个好主意。即使你有时可以让它工作,它几乎可以保证在任何类型的负载下都会断裂。 support.microsoft.com/en-in/help/238425/… 【参考方案1】:

首先,尝试重置 Internet Explorer 设置。

将网站添加到您信任的网站。

在 Internet Explorer 中,从菜单中选择工具 > Internet 选项 在顶部。 该 将出现 Internet 选项窗口。选择 安全选项卡。 然后点击 受信任的网站图标。

点击站点按钮。

该 受信任的站点窗口将打开。如图所示,在网站框中键入网站的 URL。点击 添加。然后添加一个“ s”后 http(即使地址看起来像:”

https ://trusted.website.com“)。点击 重新添加。

成为 确保您不选中该框 需要服务器验证 (https)。检查两次!

点击关闭按钮。 在受信任的站点仍处于选中状态的情况下,单击“自定义级别”。

该 安全设置 – 受信任的站点区域窗口将打开。向下滚动直到看到“ 显示混合内容”。选择 启用。

回到 Internet 选项窗口,单击 确定保存更改。再次尝试该网站,看看它是否更适合这些设置。

【讨论】:

谢谢,我会检查并更新你的答案。 @Jalpa Panchal 你能告诉我我必须在哪里做这个设置吗?我必须在用户将访问下载功能的实时服务器系统或客户端计算机中进行操作。 @Jalpa Panchal 您能分享一下您在服务器端或客户端收到此错误消息的位置吗? 看我会从 lohost url (URL:localhost:57052) 清楚地告诉你下载文件是否正确,问题是当我从实时网站 url(www.myweb.com /download.aspx)然后在此文件中我收到该消息,我正在使用该应用程序,然后它的客户端站点问题不。 @Jalpa Panchal 您尝试过其他浏览器吗?【参考方案2】:

在我的情况下,我们必须进行三个设置,然后我的下载部分就可以正常工作了

1) SSL 证书

2) 我的网络团队将最低版本的 IIS 升级到 IIS10

3) 将 IIS 设置为 64 位版本

【讨论】:

【参考方案3】:

为我解决的唯一问题是在托管 RDL 报告的服务器上禁用防火墙。

【讨论】:

【参考方案4】:

对于仍在尝试解决此问题的任何人。对我来说,在我的代码中设置 webBrowser.ScriptErrorsSuppressed = false; 后它就起作用了。试试看吧。

【讨论】:

以上是关于在 asp.net 网络表单中获取消息的网页导航被取消的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 页面上自动提交表单

ASP.NET Web 窗体和 ASP.NET 网页

ASP.NET Core 2.1:在 HTTP POST 验证失败后导航回页面显示浏览器错误

ASP.NET MVC 导航和用户界面设计

全世界的专业人士都依赖Ext.NET:一款先进的ASP.NET(网页表单+模型视图控制器)组件框架

从 ASP.Net 服务获取用于 select2 控件的 AJAX 结果