尝试将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(不是真的需要)_解决了非法路径名称的问题,但现在我又收到了一个奇怪的错误。
真正奇怪的是,这个相同的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
答案 0 :(得分:0)
我认为问题是由报表服务器URL中的下划线(_)引起的。
您可以尝试在web.config中添加以下代码
<system.web>
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>