Silverlight OOB WebBrowser异常

时间:2010-10-11 07:40:22

标签: asp.net silverlight-4.0

我有一个带有webbrowser的oob应用程序。

webbrowser源是数据绑定的,带有我定义的URI。 URI具有从我的服务器到网页的路径,该网页显示来自其硬盘的PDF文件。

请注意,所有这些都是在本地网络上完成的。

URI示例:uri = new Uri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = somePDF.pdf”);

页面代码隐藏:

    protected void Page_Load(object sender, EventArgs e)

    {

        string myURL = Request.Url.ToString();

        string[] ParamArray = Regex.Split(myURL, "pdf=");

        string Params = ParamArray[ParamArray.Length - 1];

        if (Params.Length > 0)

        {

            Filename = Regex.Replace(Params, @"//", @"\\"); ;

            if (File.Exists(Filename))

            {

                Response.ContentType = "Application/pdf";

                Response.WriteFile(Filename); //Write the file directly to the HTTP content output stream.

                Response.End();

            }

            else

                this.Title = "PDF Not Found";

        }

    }

    protected void Page_Load(object sender, EventArgs e)        {            string myURL = Request.Url.ToString();            string[] ParamArray = Regex.Split(myURL, "pdf=");            //If the URL has parameters, then get them. If not, return a blank string             string Params = ParamArray[ParamArray.Length - 1];            if (Params.Length > 0)            {                //to the called (src) web page                Filename = Regex.Replace(Params, @"//", @"\\"); ;                if (File.Exists(Filename))                {                    Response.ContentType = "Application/pdf";                    Response.WriteFile(Filename); //Write the file directly to the HTTP content output stream.                    Response.End();                }                else                    this.Title = "PDF Not Found";            }        }

我第一次设置WebBrowser源它显示PDF的所有内容。但是,当我第二次设置URI时,应用程序会抛出异常:尝试撤消尚未注册的放置目标(HRESULT异常:0x80040100)。

我做了一些测试,结果如下:

1º新Uri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = somePDF.pdf”);

2º新Uri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = someOtherPDF.pdf”); - >误差


1º新Uri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = somePDF.pdf”);

2º新Uri(@“http://www.google.com”); - >误差


1º新Uri(@“http://www.google.com”);

2º新Uri(@“http://www.microsoft.com”);

2º新Uri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = somePDF.pdf”);

3ºnewUri(@“http://ServerName/ProjectName/PDFViewer.aspx?pdf = someOtherPDF.pdf”); - >误差


我也忘了说当我从浏览器运行应用程序时(使用HTMLHost)页面显示得很好。使用浏览器打开页面也很有效。

我的aspx页面一定有问题。有什么想法吗?

佩德罗

2 个答案:

答案 0 :(得分:0)

我设法通过为每个页面创建一个新的浏览器来解决这个问题。如果您知道更优雅的解决方案,请分享。

答案 1 :(得分:0)

我不确定我是否正确地关注了问题/问题,但是可能将页面加载为异步然后分配给webbrowser?如果我在这里偏离基地,请原谅我。

public void ShowLink(string linkUrl)
      {
         if (App.Current.IsRunningOutOfBrowser)
         {
            var pageRequest = new WebClient();
            pageRequest.DownloadStringCompleted += pageRequest_DownloadStringCompleted;
            pageRequest.DownloadStringAsync(new Uri(linkUrl, UriKind.Absolute));
         }
      }

void pageRequest_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
      {
         webBrowserLink.NavigateToString(e.Result.ToString());
      }