Я создал сортировщик массива для сортировки массивов, как в Win Explorer в модуле DNN. Как и в ответе на вопрос предварительного просмотра:
Сортировка массива имен папок, таких как Windows Explorer (в цифровом и алфавитном порядке) - VB.NET
Пользователь получает следующую ошибку (ниже), когда запускает модуль, я не особо опытный разработчик ASP.NET. Вызвана ли эта ошибка, потому что я использовал StrCmpLogicalW в своем IComparer и используется на платформе, которая не поддерживает StrCmpLogicalW. Или это вызвано из-за проблемы с разрешениями.
Любая помощь очень ценится,
Большое спасибо.
Вот сортировщик, который вызывает ошибку.
Public Class nvSorter
Implements IComparer(Of String)
Declare Unicode Function StrCmpLogicalW Lib "shlwapi.dll" ( _
ByVal s1 As String, _
ByVal s2 As String) As Int32
Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
Return StrCmpLogicalW(x, y)
End Function
End Class
А это трассировка стека исключений:
InnerException: не удалось сравнить два элемента в массиве.
Сообщение:
DotNetNuke.Services.Exceptions.PageLoadException: не удалось сравнить два элемента в массиве. --- |>
System.InvalidOperationException: не удалось сравнить два элемента в массиве. --- |> System.Security.SecurityException: System.Security.Permissions.SecurityPermission в Nukeville.Modules.SkinLab.View.nvSorter.Compare (String x, String y) в System.Collections.Generic.ArraySortHelper 1.SwapIfGreaterWithItems(T[] keys, IComparer
1 для сравнения , Int32 a, Int32 b) в System.Collections.Generic.ArraySortHelper 1.QuickSort(T[] keys, Int32 left, Int32 right, IComparer
1 сравнить) в System.Collections.Generic.GenericArraySortHelper 1.Sort(T[] keys, Int32 index, Int32 length, IComparer
1 сравнить) Тип первого неудачного разрешения: System.Security.Permissions .SecurityPermission Зона сбоя сборки была: MyComputer --- Конец трассировки стека внутренней исключительной ситуации --- в System.Collections.Generic.GenericArraySortHelper 1.Sort(T[] keys, Int32 index, Int32 length, IComparer
1 Comparer) в System.Array.Sort [T] (T [ ] массив, индекс Int32, длина Int32, сравнение IComparer 1 comparer) at System.Array.Sort[T](T[] array, IComparer
1) в Nukeville.Modules.SkinLab.View.GetNVFolder (String ParentName, String [] cf) в Nukeville.Modules.SkinLab.View.GetJavaFolderArrays (String RootPath в) Nukeville.Modules.SkinLab.View.Page_PreRender (Objects, EventArgs e) в System.Web.UI.Control.OnPreRender (EventArgs e) в S ystem.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursive .Internal () Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.W. UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Control.PreRenderRecursiveInternal () в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- конец трассировки внутреннего исключения *