crystal 报告 10,asp 经典,iis 7.5:http 错误 401
crystal reports 10, asp classic, iis 7.5: http error 401
我有一份使用 Crystal Reports < 10(应该是版本 8 或 9)编写的古老报告,目前由 ASP 经典应用程序填充,具体取决于 Crystal Engine 10;该应用程序托管在必须升级的 Windows Server 2003 R2 机器上,因此我必须在等待它被重写时移动该应用程序。
应用程序本身 运行 在新服务器上正常(Win 2008 R2/IIS 7.5,此特定版本是必需的),只有报告损坏,根本没有显示任何数据,什么都没有在屏幕上但报告控件(缩放、发送、打印、导出);奇怪的是我可以将报告导出为 PDF,下载后打开它并阅读预期数据。
使用 IE 的开发人员工具,我注意到 CR 组件调用的 ASP 页面加载数据(文件是 RDCrptserver10.asp
)无法通过 401
身份验证加载无明显原因的错误消息:该页面与我浏览以加载报告的其他页面位于同一文件夹中,并且具有与其他页面完全相同的权限。
尝试直接访问该页面的 url(从开发人员工具剪切并粘贴到浏览器栏中)IE 生成一般错误消息 'page unavailable' 而不是 401
错误。
此外,在这两种情况下(直接 url 访问和 rtp 加载)IIS 日志都有一个 200
成功条目(是的,IIS 说在这两种情况下页面都已成功发送)。
我被卡住了,因为在检查了我想到的所有内容后,我无法让报告在新服务器上工作。
我的检查和尝试:
- odbc 数据源:名称正确,测试用户并通过工作正常。如果源被破坏,我将无法下载包含实际和最新数据的 PDF 文件
- 文件路径:没有 404
错误,仔细检查所需文件是否就位且可访问
- 完全删除包含相关文件的文件夹的身份验证(该应用程序位于公司内部网中,具有集成的 windows 身份验证)但在加载报告时仍然出现 401
错误
- 检查相关文件的ntfs和iis权限
- 仔细检查 crystal 引擎的软件版本是否与当前安装在旧服务器
上的相同
- 服务器上存在 ASP 页面调用的加载报表的组件
- 事件查看器中没有错误
有没有人在 iis 7.5 上遇到与 crystal/asp 类似的问题?
我以一种真正出乎意料的方式找到了解决问题的方法:在 RDCrptserver10.asp
页面中的一些 Response.Flush()
放置在这里和那里允许报告在新服务器上成功填充。
旧代码 运行 很长时间以来成功的是:
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
Response.BinaryWrite temp
要使其在新服务器上 运行 必须进行如下更改:
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
Response.BinaryWrite temp
Response.Flush
在上面的页面中,有许多块与那个块相似,参数略有不同 and/or ContentType 取决于不同的输入,但在每个 BinaryWrite 解决问题后添加刷新,401 失败和所有。
我仍然对 401 错误感到困惑,但至少现在它起作用了...
我有一份使用 Crystal Reports < 10(应该是版本 8 或 9)编写的古老报告,目前由 ASP 经典应用程序填充,具体取决于 Crystal Engine 10;该应用程序托管在必须升级的 Windows Server 2003 R2 机器上,因此我必须在等待它被重写时移动该应用程序。
应用程序本身 运行 在新服务器上正常(Win 2008 R2/IIS 7.5,此特定版本是必需的),只有报告损坏,根本没有显示任何数据,什么都没有在屏幕上但报告控件(缩放、发送、打印、导出);奇怪的是我可以将报告导出为 PDF,下载后打开它并阅读预期数据。
使用 IE 的开发人员工具,我注意到 CR 组件调用的 ASP 页面加载数据(文件是 RDCrptserver10.asp
)无法通过 401
身份验证加载无明显原因的错误消息:该页面与我浏览以加载报告的其他页面位于同一文件夹中,并且具有与其他页面完全相同的权限。
尝试直接访问该页面的 url(从开发人员工具剪切并粘贴到浏览器栏中)IE 生成一般错误消息 'page unavailable' 而不是 401
错误。
此外,在这两种情况下(直接 url 访问和 rtp 加载)IIS 日志都有一个 200
成功条目(是的,IIS 说在这两种情况下页面都已成功发送)。
我被卡住了,因为在检查了我想到的所有内容后,我无法让报告在新服务器上工作。
我的检查和尝试:
- odbc 数据源:名称正确,测试用户并通过工作正常。如果源被破坏,我将无法下载包含实际和最新数据的 PDF 文件
- 文件路径:没有 404
错误,仔细检查所需文件是否就位且可访问
- 完全删除包含相关文件的文件夹的身份验证(该应用程序位于公司内部网中,具有集成的 windows 身份验证)但在加载报告时仍然出现 401
错误
- 检查相关文件的ntfs和iis权限
- 仔细检查 crystal 引擎的软件版本是否与当前安装在旧服务器
上的相同
- 服务器上存在 ASP 页面调用的加载报表的组件
- 事件查看器中没有错误
有没有人在 iis 7.5 上遇到与 crystal/asp 类似的问题?
我以一种真正出乎意料的方式找到了解决问题的方法:在 RDCrptserver10.asp
页面中的一些 Response.Flush()
放置在这里和那里允许报告在新服务器上成功填充。
旧代码 运行 很长时间以来成功的是:
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
Response.BinaryWrite temp
要使其在新服务器上 运行 必须进行如下更改:
Response.AddHeader "CONTENT-LENGTH", lenb(temp)
Response.ContentType = EPFMIMETYPE
Response.BinaryWrite temp
Response.Flush
在上面的页面中,有许多块与那个块相似,参数略有不同 and/or ContentType 取决于不同的输入,但在每个 BinaryWrite 解决问题后添加刷新,401 失败和所有。
我仍然对 401 错误感到困惑,但至少现在它起作用了...