2010-04-12 3 views

ответ

1

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

Опции вы включают в себя:

  • Автоматически повторить несколько раз, в случае, если проблема соединения преходяще
  • Возврат соответствующее сообщение об ошибке для пользователя и, возможно, необходимо войти или по электронной почте исключение
  • Используйте ранее сохраненную в кэше версию XML-файла до тех пор, пока не будет получена новая копия
  • Пусть исключение превратится в вызывающий слой и позвольте ему справиться с ним (возможно, сначала его запишите)

Возможно, вам также понадобится очистить любые ресурсы (например, открытые соединения) в блоке finally.

0

Я попытался подойти к исключению, чтобы вызвать различную обработку, но по какой-то причине это не работает. Вместо исключения, вызывающего ErrorMessage, чтобы показать, и Repeater1 будет скрыт, я все равно получаю исключение, которое убивает страницу: Сведения об исключении: System.Net.WebException: Удаленный сервер ответил на ошибку: (404) Not Found.

Почему я не могу получить исключение, а затем принять другое действие?

protected void Page_PreRender(object sender, System.EventArgs e) 
{ 
    try 
    { 
     RssSource.DataFile = "http://www.example.com/rss/feed/index1.aspx"; 
     RssSource.XPath = "/rss/channel/item[position()<3]"; 
     RssSource.EnableCaching = true; 
     RssSource.CacheDuration = 43200; 
     RssSource.CacheExpirationPolicy = DataSourceCacheExpiry.Absolute; 
    } 
    catch (Exception ex) 
    { 
     ErrorMessage.Visible = true; 
     Repeater1.Visible = false; 

    } 
} 

<asp:Label ID="ErrorMessage" runat="server" Text="News not unavailable" Visible="false" /> 
<asp:XmlDataSource ID="RssSource" runat="server" /> 
<asp:Repeater ID="repeater1" runat="server" DataSourceID="RssSource"> 
    <ItemTemplate> 
     <p><%# XPath("description")%></p> 
    </ItemTemplate> 
</asp:Repeater> 
0

Я предполагаю, что это была решена, но я на него ответить в случае, если кто-то имеет вопрос и натыкается на этот пост.

Вы должны также выполнить привязку к XmlDataSource в вашей Ьге блоке ...

  try 
      { 

       xdsRSS.DataFile = Configuration.BeaconConfigurationSection.Current.SyndicatedJobs.RssUrl; 
       xdsRSS.XPath = Configuration.BeaconConfigurationSection.Current.SyndicatedJobs.XPath; 
       xdsRSS.EnableCaching = true; 
       xdsRSS.CacheExpirationPolicy = DataSourceCacheExpiry.Absolute; 
       xdsRSS.CacheDuration = 6000; 
       dlRSS.DataSource = xdsRSS; 
       dlRSS.DataBind(); 
      } 
      catch 
      { 
       dlRSS.Visible = false; 
       pnlLinkToJobSite.Visible = true; 
      } 

... не забудьте удалить свойство DataSourceID из ретранслятора, и вы должны быть хорошо идти.

Смежные вопросы