错误:从客户端检测到潜在危险的Request.Path值(&)

时间:2018-05-02 20:00:44

标签: asp.net

尝试将Uri设置为SSRS 2014报表服务器Uri时,我收到此错误。这是发生错误的代码。

mReportViewer.ServerReport.ReportServerUrl = New System.Uri("http://MONROE:80/ReportServer_SQL2014")

这是我在发布之前测试的新的ASP.NET 4.0 Web应用程序。完全相同的代码在此Web应用程序的当前生产版本(.NET 3.5)下执行正常。

我无法看到此网址的危险性。我想知道它是否会导致错误,但是,这似乎是令人讨厌的代码行,因为如果我对此进行评论,页面会正常加载(尽管没有呈现报告)

有什么想法吗?

----更新 - 5/3/2018

从报表服务器名称中删除:80(不是真的需要)_解决了非法路径名称的问题,但现在我又收到了一个奇怪的错误。 enter image description here

真正奇怪的是,这个相同的Web应用程序和报表查看器在使用IIS Express的开发计算机上运行良好。此外,此报告URL在ASP.NET 3.5下的生产版本中可以正常工作。

关于路径或文件名的任何想法都是关注的,因为http://MONROE/ReportServer_SQL2014绝对不是248个字符!

这是Application_BeginRequest程序的代码......

   Sub Application_BeginRequest(ByVal Sender As Object, ByVal E As EventArgs)
    ' This solves a vulnerability issue
    ' Microsoft Knowledge Base (KB) article 887459, "Programmatically Checking for Canonicalization Issues with ASP.NET,"
    If (Request.Path.IndexOf(Chr(92)) >= 0 Or
      System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) Then

        Throw New HttpException(404, "Not Found")
    End If
    ' The following line must be restored when moving to production on a site with a secure certificate
    If ((Not HttpContext.Current.Request.IsSecureConnection) And (Not HttpContext.Current.Request.IsLocal)) Then
        Response.Redirect("https://" & Request.ServerVariables("HTTP_HOST") & HttpContext.Current.Request.RawUrl)
    End If

1 个答案:

答案 0 :(得分:0)

我认为问题是由报表服务器URL中的下划线(_)引起的。

您可以尝试在web.config中添加以下代码

<system.web>
    <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>