• ASP.NET2.0站点跨服务器访问Sql Sever 2005 Reporting Service


    今天用了一上午加中午的时间才搞定ASP.NET2.0站点跨服务器访问Sql Sever 2005 Reporting Service的问题。无奈,对Windows集成身份验证方式很不熟悉,很多时间浪费在各种各样的尝试上
    ASP.NET在IIS6上应该是以NETWORK SERVICE帐户运行,而Reporting Service(以后简称RS)站点默认采用Windows集成身份验证,因此,如果ASP.NET要访问RS服务器上的报表,那么RS服务器上必须也有NETWORK SERVICE帐户。因为我这两台服务器都运行在Windows Server 2003上,自然都有NETWORK SERVICE帐户,问题在于,它们的密码肯定不同,难道要我们手工把这2台服务器的NETWORK SERVICE帐户改成一样的?这样不太好吧?因此我决定在2个服务器上都新建一个帐户X,密码相同。下面分别对2台服务器进行设置:
    1、ASP.NET服务器
    (1)设置帐户X隶属于组IIS_WPG,这样帐户X可以代替帐户NETWORK SERVICE运行ASP.NET系统
    (2)在Web.Config文件中将ASP.NET系统设置为启用模拟。配置方法如下:

    <system.web>
        
    <identity impersonate="true" userName="X" password="PwdOfX" />
    </system.web>

    因为我并不想让服务器上的所有ASP.NET系统都运行在X帐户下,所以这里采用模拟的方式。简单起见,用户名和密码也没有采用加密方式。与此相关的更详细的说明,请参考《如何创建自定义帐户来运行 ASP.NET》
    另外需要说明的是:我本来想只在站点的某个子目录(存放所有报表访问页面的目录)下设置模拟,因此在Web.Config中利用<location>针对子目录进行模拟的设置,但是这样访问报表服务会出现“因为安全原因,此 XML 文档中禁用 DTD。要启用 DTD 处理,将 XmlReaderSettings 上的 ProhibitDtd 属性设置为 false,并将该设置传递给 XmlReader.Create 方法”的错误。因此只能放弃此做法。

    2、RS服务器
    (1)访问报表服务管理器,默认地址是http://RSAddress/Reports,其中RSAddress是RS服务器的IP地址、机器名或域名。
    (2)登录之后,在主文件夹下,或者导航到需要的目录级别
    (3)点击顶部Tab页的“属性”标题,选择“安全性”,然后点击“新建角色分配”
    (4)在顶部的“组或用户名”处输入“X”(帐户),下面的角色选择“浏览者”。点击“确定”,完成设置。

    2个服务器都设置完成之后,应该就可以从ASP.NET系统上访问RS服务器上的报表了。
    这里还有一个意外的问题,就是我一开始是利用VS2005自带的文件系统网站的方式(就是在新建网站的时候选择“文件系统”)访问RS服务器上的报表,无论怎么设置都会报上面所说的那个“因为安全原因,禁用DTD”的错误,改用IIS网站的方式之后就好了。

    花费了这么多时间搞这个问题,放在首页,希望大家在遇到类似问题的时候可以少走弯路。

  • 相关阅读:
    jsp页面跳转的路径问题
    Hibernate简单的保存操作
    Hibernate中如何完成持久化类和数据库映射文件
    spring中IOC的简单使用
    对称的二叉树 --剑指offer
    二叉树的下一个结点 --剑指offer
    删除链表中重复的结点 --剑指offer
    链表中环的入口结点 --剑指offer
    字符流中第一个不重复的字符 --剑指offer
    表示数值的字符串 --剑指offer
  • 原文地址:https://www.cnblogs.com/Ricky81317/p/975628.html
Copyright © 2020-2023  润新知