【发布时间】:2018-05-02 20:00:44
【问题描述】:
尝试将 Uri 设置为 SSRS 2014 Report Server Uri 时出现此错误。这是发生错误的代码。
mReportViewer.ServerReport.ReportServerUrl = New System.Uri("http://MONROE:80/ReportServer_SQL2014")
这是在一个新的 ASP.NET 4.0 Web 应用程序上,我在发布前正在测试它。在此 Web 应用程序的当前生产版本(即 .NET 3.5)下,完全相同的代码可以正常执行。
我看不出这个 URL 有什么危险。我想知道是否可能是其他原因导致错误,但是,这似乎是有问题的代码行,因为如果我将其注释掉,页面会正常加载(尽管没有呈现报告)。
有什么想法吗??
---- 更新 - 2018 年 5 月 3 日
从报表服务器名称中删除 :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
【问题讨论】:
-
可能是它为我们设置的新项目https,因此它警告您因为http?
-
错误是设置 URL时出现,还是调用时出现?
-
可以添加
Uri.EscapeDataString("http://MONROE:80/ReportServer_SQL2014")。 -
另外,我不能肯定上面列出的代码行是罪魁祸首,因为我相信我已经超越了这一点。我认为这个错误现在来自 SSRS 中的某个地方。
标签: asp.net