Исключение Silverlight OOB WebBrowser - PullRequest
0 голосов
/ 11 октября 2010

У меня есть приложение OOB с веб-браузером.

Источник веб-браузера связан с 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º новый Ури (@ "http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

2º новый Uri (@ "http://ServerName/ProjectName/PDFViewer.aspx?pdf=someOtherPDF.pdf"); -> ошибка


1º новый Ури (@ "http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

2º новый Uri (@ "http://www.google.com"); -> ошибка


1º новый Ури (@ "http://www.google.com");

2º новый Ури (@ "http://www.microsoft.com");

2º новый Ури (@ "http://ServerName/ProjectName/PDFViewer.aspx?pdf=somePDF.pdf");

3º новый Uri (@ "http://ServerName/ProjectName/PDFViewer.aspx?pdf=someOtherPDF.pdf"); -> ошибка


Я также забыл сказать, что при запуске приложения из моего браузера (с использованием HTMLHost) страницы отображаются нормально. Открытие страниц с помощью браузера также будет хорошо работать.

Должно быть какая-то проблема с моей страницей aspx. Есть идеи?

Pedro

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

Я не уверен, правильно ли я следую за вопросом / вопросом, но, возможно, загрузил страницы асинхронно и затем назначил веб-браузеру? Прости меня, если я здесь не в базе.

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 голосов
/ 11 октября 2010

Мне удалось решить эту проблему, создав новый браузер для каждой страницы. Если вы знаете более элегантное решение, пожалуйста, поделитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...