开发者

Silverlight OOB WebBrowser Exception

I've got an oob app with a webbrowser on it.

The webbrowser source is databound with a URI defined by me. The URI has a path to a webpage from my server that displays a PDF file from its hardrive.

Note that all this is done on a local network.

URI example: uri = new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

Page code-behind:

    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();                }                els开发者_运维问答e                    this.Title = "PDF Not Found";            }        }

The first time I set the WebBrowser source everything it displays the PDF. But when I set the URI one second time the app throws an exception: Trying to revoke a drop target that has not been registered (Exception from HRESULT: 0x80040100).

I've done a few tests and here are the results:

1º new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

2º new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=someOtherPDF.pdf"); ->error


1º new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

2º new Uri(@"http://www.google.com"); ->error


1º new Uri(@"http://www.google.com");

2º new Uri(@"http://www.microsoft.com");

2º new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

3º new Uri(@"http://ServerName/ProjectName/PDFViewer.aspx?pdf=someOtherPDF.pdf"); ->error


I also forgot to say that when running the app from my browser (using a HTMLHost) the pages display just fine. Opening the pages using a browser will also work well.

It must be some problem with my aspx page. Any ideas?

Pedro


I've managed to resolve this by creating a new browser for each page. If you know of a more elegant solution please share.


I am not sure if I'm following the question/problem correctly but maybe loading the pages async and then assigning to webbrowser? Forgive me if I am off-base here.

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());
      }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜