2011-01-23 4 views
1

Я нашел этот код:Как перевести эти C# код для определения текущего уровня траста для приложений ASP.NET в VB.Net

AspNetHostingPermissionLevel GetCurrentTrustLevel() { 
    foreach (AspNetHostingPermissionLevel trustLevel in 
      new AspNetHostingPermissionLevel [] { 
       AspNetHostingPermissionLevel.Unrestricted, 
       AspNetHostingPermissionLevel.High, 
       AspNetHostingPermissionLevel.Medium, 
       AspNetHostingPermissionLevel.Low, 
       AspNetHostingPermissionLevel.Minimal 
      }) 
    { 
     try { 
      new AspNetHostingPermission(trustLevel).Demand(); 
     } 
     catch (System.Security.SecurityException) { 
      continue; 
     } 

     return trustLevel; 
    } 

    return AspNetHostingPermissionLevel.None; 
} 

из Get current ASP.NET Trust Level programmatically, но это C#, и я хотел бы иметь это для VB.NET. Есть ли шанс кого-то эксперта как в VB.NET, так и в C#, который может перевести это в код VB?

я пробовал себя и получил следующий VB.NET код, но он генерирует ошибку внутри моих БВ:

Private Function GetCurrentTrustLevel() As AspNetHostingPermissionLevel 

    For Each trustLevel As AspNetHostingPermissionLevel In New _ 
     AspNetHostingPermissionLevel() { _ 
      AspNetHostingPermissionLevel.Unrestricted, _ 
      AspNetHostingPermissionLevel.High, _ 
      AspNetHostingPermissionLevel.Medium, _ 
      AspNetHostingPermissionLevel.Low, _ 
      AspNetHostingPermissionLevel.Minimal _ 
     } 

      Try 
       New AspNetHostingPermission(trustLevel).Demand() 
      Catch generatedExceptionName As System.Security.SecurityException 
       Continue Try 
      End Try 

      Return trustLevel 
     Next 

     Return AspNetHostingPermissionLevel.None 
    End Function 

Этих части, кажется, неправильно:

New AspNetHostingPermission(trustLevel).Demand() 

и

Continue Try 

Очевидно, что нужно обращаться с кем-то дымоходом нт как в C# и VB.NET и может обнаружить ошибки в VB.NET

Благодаря

Lars

+1

Попробуйте загрузить его в Reflector и выберите для отображения его в VB.Net. Обычно работает. http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1 –

+0

Спасибо за подсказку! Я посмотрю, что в следующий раз я сталкиваюсь с аналогичной проблемой C# vs VB.NET. Lars – lars

ответ

1

Следующая должен работать

Private Function GetCurrentTrustLevel() As AspNetHostingPermissionLevel 

    For Each trustLevel As AspNetHostingPermissionLevel In New _ 
     AspNetHostingPermissionLevel() { _ 
      AspNetHostingPermissionLevel.Unrestricted, _ 
      AspNetHostingPermissionLevel.High, _ 
      AspNetHostingPermissionLevel.Medium, _ 
      AspNetHostingPermissionLevel.Low, _ 
      AspNetHostingPermissionLevel.Minimal _ 
     } 

      Try 
       Dim HostedPermission As AspNetHostingPermission = _ 
        New AspNetHostingPermission(trustLevel) 
       HostedPermission.Demand() 
      Catch generatedExceptionName As System.Security.SecurityException 
       Continue For 
      End Try 

      Return trustLevel 
     Next 

     Return AspNetHostingPermissionLevel.None 
    End Function 

Я не эксперт VB.Net, но следующее, что я сделал, чтобы заставить его работать:

  1. Continue For, а не Continue Try
  2. Нужно объявить переменную типа AspNetHostingPermission и инициализировать ее, а затем вызвать метод Demand.
+0

Но вы эксперт VB.Net :-) Вы решили! Отлично! Спасибо! Lars – lars

+0

@lars счастлив быть полезным :) –