C# 从Crystal Reports Viewer打印和导出时抛出错误

C# 从Crystal Reports Viewer打印和导出时抛出错误,c#,asp.net,crystal-reports,C#,Asp.net,Crystal Reports,我正在使用.net Crystal Reports viewer以asp.net Web表单显示报告。这可以正常工作,但当我单击打印选项,然后单击选项弹出窗口上的“确定”时,我会出现以下错误: 访问被拒绝。 描述:安 期间发生未处理的异常 当前web的执行 要求请查看堆栈跟踪 有关错误的详细信息,请参见 以及它在代码中的起源 例外情况详情: System.Runtime.InteropServices.COMException: 访问被拒绝 当我尝试导出时也是一样。我在VisualStudio开

我正在使用.net Crystal Reports viewer以asp.net Web表单显示报告。这可以正常工作,但当我单击打印选项,然后单击选项弹出窗口上的“确定”时,我会出现以下错误:

访问被拒绝。
描述:安 期间发生未处理的异常 当前web的执行 要求请查看堆栈跟踪 有关错误的详细信息,请参见 以及它在代码中的起源

例外情况详情: System.Runtime.InteropServices.COMException: 访问被拒绝

当我尝试导出时也是一样。我在VisualStudio开发服务器VS2008上运行这个。我能做些什么来纠正这个问题

编辑:

下面是一些代码

        txtCategory: 
    <asp:TextBox ID="txtCategory" runat="server"></asp:TextBox>
    <br />
    txtFromDate:&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="txtFromDate" runat="server" TabIndex="1"></asp:TextBox>
    <br />
    txtToDate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="txtToDate" runat="server" TabIndex="2"></asp:TextBox>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Button ID="btnShowReport" runat="server" onclick="btnShowReport_Click" 
        TabIndex="4" Text="Show Report" />
    <br />
    <br />
    <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">

    </CR:CrystalReportSource>
    <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" 
        AutoDataBind="True" DisplayGroupTree="False" EnableDatabaseLogonPrompt="False" 
        EnableParameterPrompt="False" HasRefreshButton="True" Height="50px" 
        ReportSourceID="CrystalReportSource1" Width="350px" />

我不知道你的问题的确切答案,但我可以建议我会看什么,希望对你有所帮助。由于这是一个拒绝访问的错误,我将查看最终的访问权限:

Server.MapPath(@“~\ReportFiles\CrystalReport.rpt”)

Google搜索CrystalDecisions.ReportAppServer访问被拒绝表明,您可以使用web.config中的impersonate与具有读/写访问权限的用户一起访问该文件夹

使用Windows身份验证可能会确保使用模拟


希望能有所帮助。

我发现了两件事:

1) 当我打开VisualStudio时,它开始抛出错误,迫使我搜索internet的两端并使用devenv/resetuserdata重置环境。它的固定部分。我还修复了我的.NET安装,但我不知道这是否有任何作用

2) 显然,在代码中将报表分配给查看器之后,我需要刷新reportviewer

我补充说:

CrystalReportViewer1.RefreshReport();

到我的代码的底部,还有维奥拉!现在我可以导出和打印了。这是多么简单和疯狂?

@MAW74656您能给我们看一些代码吗?哪一行抛出了错误?我怀疑可能是report.Load.No错误消息在这些代码行中,错误消息是从尝试打印的Crystal Reports Viewer控件抛出的。我没有在代码中实现这一点。我被要求提供一些代码,所以我发布了与页面相关的所有内容,但这些代码似乎都没有问题。试试这个@Andrew-你的评论应该列为另一个答案,这样如果你的链接成功,我可以奖励你奖金。我会尝试一下。如果我在web表单中使用表单身份验证,它会改变什么吗?我认为如果是表单身份验证,那么用户将是经过身份验证的人。如果Windows身份验证已打开,并且登录的帐户不是Windows帐户,则这可能是您的问题。您可以确保本地计算机上的诸如IUSR之类的帐户有权访问该目录,并关闭身份验证以进行测试。在何处关闭身份验证?如果您可以访问IIS,则可以打开匿名访问-这基本上意味着人们无需登录即可访问该应用程序。在IIS中,您可以为应用程序选择一个特定的用户作为IIS默认值运行,或者只作为IIS默认值运行,目前我的设置是本地IUSR帐户。因此,请回答IIS的评论。如果你不能访问IIS,那么web.config可能会有其他的选择,但我现在在家,明天才能检查我们的任何应用程序。他认为这可能会有所帮助,但现在我甚至没有在生产服务器上工作,只是VisualStudio的内置开发服务器。
CrystalReportViewer1.RefreshReport();