2010-10-11 2 views
0

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

Источник веб-браузера представляет собой привязку данных с определенным URI. URI имеет путь к веб-странице с моего сервера, который отображает PDF-файл из своего жесткого диска.

Обратите внимание, что все это делается в локальной сети.

Пример URI: uri = новый Uri (@ "http: //ServerName/ProjectName/PDFViewer.aspx? Pdf = somePDF.pdf");

Page фонового кода:

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º новый Uri (@ "http: //ServerName/ProjectName/PDFViewer.aspx? Pdf = someOtherPDF.pdf"); -> ошибка


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

Это, должно быть, проблема с моей страницей aspx. Есть идеи?

Педро

+0

Такая же ошибка, в браузере SL5. Работает нормально с SL локально. На реальном веб-сервере эта ошибка возникает каждый раз, когда я пытаюсь повторно перемещаться по веб-браузеру. – felickz

ответ

0

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

0

Я не уверен, правильно ли я задал вопрос/проблему, но, возможно, загрузил страницы async, а затем назначил 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()); 
     } 
Смежные вопросы