在 Visual Studio 2005 或 2008 中配置服务器文件

服务器文件是指在 IIS 服务器上发布报表的报表 Web 服务的集合。服务器文件最早在 Visual Studio .NET 2002 中作为 Crystal Reports 中的一个 Crystal 服务节点提供,但之后被删除。其后的每个 Crystal Reports 版本都在 SDK 中继续支持服务器文件;但在每个版本中都需要进行一些配置。

服务器文件由基础报表文件生成,这些基础报表文件存储在 Web 服务器文件目录下的示例报表文件夹中(或任何其他指定的文件夹中)。

配置服务器文件

要为 Visual Studio 2005 或 2008 配置服务器文件,必须完成两个步骤。首先,创建发布报表的报表 Web 服务。第二步是修改与新的 Web 服务相对应的 web.config 文件。在 Visual Studio 2005 中,对服务器文件已不再使用在 Visual Studio .NET 2002 中使用的配置文件夹,而是在 web.config 文件中添加一个配置项。

可将该配置项分别添加到各个项目的 web.config 文件中,每次可添加一个。不过,建议您将该配置项添加到位于包含报表 Web 服务的虚拟目录下的 web.config 文件中。

创建服务器文件所需的报表 Web 服务

  1. 启动 Visual Studio。

  2. 从“文件”菜单中,选择“新建”,然后单击“网站”。

  3. 在“新建网站”对话框中,从“语言”列表中选择“Visual C#”。

  4. 从“模板”列表中,单击“ASP.NET Web 服务”

  5. 在“位置”字段中,用您的项目名替换默认项目名。

    出于本示例的说明目的,我们使用名称 CrystalReportsWebServices 将项目保存在 C:\InetPub\wwwroot\ 中。

    C:\InetPub\wwwroot\CrystalReportsWebServices\
    
  6. 单击“确定”。

  7. 从“调试”菜单中,单击“开始调试”。

    将出现一个对话框,提示必须修改 Web.config 文件。单击“确定”按钮启用调试。

  8. 在完成调试后,返回到应用程序。

  9. 从“解决方案资源管理器”中,右击 Service.asmx,然后单击“删除”。

  10. 在“解决方案资源管理器”中,展开 App_Code 文件夹,右击 Service.cs,然后单击“删除”。

  11. 在“解决方案资源管理器”中,右击以粗体显示的项目名称,然后单击“添加新项”。

  12. 在“添加新项”对话框中,执行以下操作:

    1. 从“已安装模板”字段中,选择“Web 服务”。
    2. 在“名称”字段中,输入 ServerFileReportService.asmx。
    3. 取消选中“将代码放在单独的文件中”。
    4. 单击“添加”。
  13. 用下列行替换 ServerFileReportService.asmx 文件的内容:

    <%@ WebService language="C#"
    class="CrystalDecisions.Web.Services.ServerFileReportService" %>
    
  14. 从“文件”菜单中,单击“全部保存”。

  15. 在“解决方案资源管理器”中,右击以粗体显示的项目名称,然后单击“添加新项”。

  16. 在“添加新项”对话框中:

    1. 从“已安装模板”字段中,选择“Web 服务”。
    2. 在“名称”字段中,输入 ServerFileReportManager.asmx
    3. 取消选中“将代码放在单独的文件中”。
    4. 单击“添加”。
  17. 用下列行替换 ServerFileReportManager.asmx 文件的内容:

    <%@ WebService language="C#"
    class="CrystalDecisions.Web.Services.ServerFileReportManager" %>
    
  18. 从“文件”菜单中,单击“全部保存”。

将服务器文件配置项添加到 web.config 文件中

  1. 从“解决方案资源管理器”中,打开 Web.Config 文件。

  2. 将 Web.Config 文件的全部内容替换为以下 XML。

    在下面的示例中,将根目录的值更改为已在其中存储了报表的目录。出于本示例的说明目的,文件路径设置为 C:\program files\Microsoft Visual Studio 8\Crystal Reports\Samples\en\Reports\Feature Examples。

    <?xml version="1.0"?>
    
    <configuration
    xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
    <configSections>
    <sectionGroup name="crystalDecisions">
    <section name="serverFileReportManager"
    type="System.Configuration.NameValueSectionHandler, System,
    Version=1.0.3300.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089, Custom=null"/>
    </sectionGroup>
    </configSections>
    
    <crystalDecisions>
    <serverFileReportManager>
    <add key="rootDirectory" value="C:\program files\Microsoft Visual Studio 8\Crystal Reports\Samples\en\Reports\Feature Examples"/>
    </serverFileReportManager>
    </crystalDecisions>
    <appSettings/>
    <connectionStrings/>
    
    <system.web>
    <compilation debug="true">
    <assemblies>
    <add assembly="CrystalDecisions.Web,
    Version=10.2.3600.0, Culture=neutral,
    PublicKeyToken=692FBEA5521E1304"/>
    </assemblies>
    </compilation>
    </system.web>
    </configuration>
    
    Note注意

    在出现 PUT_FILE_DIRECTORY_PATH_TO_REPORTS_FOLDER_HERE 的位置,必须输入报表文件夹的文件目录路径。有关报表文件夹的路径,请参见“示例报表目录”

  3. 保存对 web.config 文件所做的更改。

  4. 要验证查看器的虚拟目录能否正常工作,请打开浏览器并输入已发布的报表 Web 服务的 URL。

    https://localhost/CrystalReportsWebServices/ServerFileReportService.asmx?wsdl
    

旧版服务器文件和查看器虚拟目录

在以前版本的 Crystal Reports 中,服务器文件是 IIS 通过一个集中 Web 服务提供的,该 Web 服务位于查看器的虚拟目录中。随后的每个 Crystal Reports 版本都在 IIS 中创建一个名为“查看器虚拟目录”的附加目录,使多个版本的 Crystal Reports 可在系统上共存。

如果在使用早期版本的 Crystal Reports 项目中编写了服务器文件代码,那么在将项目升级到更高的版本时,需要维护附加的“查看器虚拟目录”。在代码中,必须将每个 ServerFileReport 实例的 WebServiceURL 属性中的“查看器虚拟目录”名称更改为报表 Web 服务的当前位置,这样 ServerFileReport 实例才能正常工作。

Note注意

要确定各版本中“查看器虚拟目录”的名称和路径,请参见“查看器虚拟目录”

更改 ServerFileReport 实例的 WebServiceURL 属性中的“查看器虚拟目录”

  1. 找到项目中每次为 ServerFilesReport 实例的 WebServiceURL 属性赋值的位置。

  2. 比较代码中当前指定的查看器虚拟目录名称和之前版本中所用的查看器虚拟目录的名称。

    请参见“查看器虚拟目录”

  3. 更改 Crystal Reports 最高安装版本中使用的查看器虚拟目录的名称。

    如果 Crystal Reports 最高安装版本是 Crystal Reports for Visual Studio 2005,请输入在本教程中前面创建的报表 Web 服务的路径。

  4. 重新进行编译,并验证报表是否能正确加载。

请参见