【发布时间】:2011-05-09 02:14:30
【问题描述】:
我创建了一个数组排序器来对 DNN 模块中的 Win Explorer 中的数组进行排序。正如对预览问题的回答:
Sorting an array of folder names like Windows Explorer (Numerically and Alphabetically) - VB.NET
用户在运行模块时会收到以下错误(如下),我不是一个特别经验丰富的 ASP.NET 开发人员。这个错误是因为我在 IComparer 中使用了StrCmpLogicalW 并且在不支持 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 at Nukeville.Modules.SkinLab.View.nvSorter.Compare(String x, String y) at System.Collections.Generic.ArraySortHelper
1.SwapIfGreaterWithItems(T[] keys, IComparer1 比较器, Int32 a, Int32 b) 在 System.Collections.Generic.ArraySortHelper1.QuickSort(T[] keys, Int32 left, Int32 right, IComparer1 比较器) 在 System.Collections.Generic.GenericArraySortHelper1.Sort(T[] keys, Int32 index, Int32 length, IComparer1 比较器) 失败的第一个权限的类型是:System.Security.Permissions .SecurityPermission 失败的程序集区域是:MyComputer --- End of internal exception stack trace --- at System.Collections.Generic.GenericArraySortHelper1.Sort(T[] keys, Int32 index, Int32 length, IComparer1 comparer) at System.Array.Sort[T](T[ ] array, Int32 index, Int32 length, IComparer1 comparer) at System.Array.Sort[T](T[] array, IComparer1 comparer) at Nukeville.Modules.SkinLab.View.GetNVFolder(String ParentName, String[] cf) at Nukeville.Modules.SkinLab.View.GetJavaFolderArrays(String RootPath) at System.Web.UI.Control.OnPr 上的 Nukeville.Modules.SkinLab.View.Page_PreRender(Object s, EventArgs e) eRender(EventArgs e) 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control。 PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() ) 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Control.PreRenderRecursiveInternal() 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- 内部异常堆栈结束追踪---
【问题讨论】:
标签: asp.net vb.net sorting icomparer