我有一个报告服务的渲染扩展程序,它使用ReportExecution2005.asmx服务来执行多个“子报告”,然后将结果放入PowerPoint演示文稿中。
一个典型的使用场景是进入报告管理器,选择我的“Powerpoint”报告,它仅用作传递给“子报表”参数的占位符。然后我从导出格式列表中选择我的扩展名,点击导出,它运行扩展并将pptx文件返回给我。
这在我们的生产和测试服务器上都很好运行。但是我在设置另一个测试服务器时遇到了一个非常奇怪的问题。
任何由分机拨打的WebService呼叫将返回“401访问被拒绝”的错误(无更多子状态信息可用)。
Things I ve tried without success: - allow physical access to the folder structure of the ReportServer virtual directory to everyone. And I mean literally everyone - ASPNET, NETWORK SERVICE, Everyone, the account I usually use to log in, which is an admin and owner of the folder - use reporting manager to set up the security on the reporting services side. Again, every conceivable user/group account which could be involved was given every conceivable role. - allow anonymous access to the ReportServer web app. - enabled impersonation on the ReportServer web app. - hardcoded the user credentials to use when calling the webservice (by default it just uses System.Net.CredentialCache.DefaultCredentials)
我还制作了一个小测试网站,与渲染扩展完全相同,使用ReportExecution服务,从网站上,Web服务器验证正常,并允许我调用Web服务,所以显然问题不在于Web服务安全设置本身。
开始扯我的头发了。作为最后的办法,我快要重新安装报告服务,但在此期间(或者如果这没有帮助)——如果有人遇到类似的情况,我非常感激任何输入。