Handle duplicate parameters in DotNetNuke UrlRewriteModule.

In my application based on DotNetNuke 4.0.2 I’ve noticed that sometimes I have url with duplicate parameters, e.g “PortalID=0&PortalID=0”


I didn’t  fully investigate why it happens and is it DNN core issue or my custom code, but the current UrlRewriteModule code doesn’t handle it properly. I’ve created the function that will read only the first parameter and ignore the rest. 


        ‘call     PortalId = GetIntFromQueryString(Request, “portalid”, PortalId) ’14/3/2006


        Shared Function GetIntFromQueryString(ByVal Request As HttpRequest, ByVal key As String, ByVal nDefault As Integer) As Integer


            Dim nValue As Integer = nDefault


            Dim sQueryStringValues As String = Request.QueryString(key)


            If Not (sQueryStringValues Is Nothing) Then


                Try


                    nValue = Int32.Parse(sQueryStringValues)


                Catch


                    ‘By some reason (not fully investigated) sometimes QueryString has the same parameter inserted more that once,


                    ‘e.g “PortalID=0&PortalId=0” so QueryString(key) will be “0,0”


                    Dim asValues() As String = sQueryStringValues.Split(“,”c)


                    If asValues.Length > 0 Then


                        nValue = Int32.Parse(asValues(0))


                    End If


                End Try


            End If


            Return nValue


        End Function



I noticed that DNN Support has a few bug reports with exception “Input string was not in a correct format” (here, here, here and here) .May be some of them are caused by the same reason as mine.



 
Advertisements