SSRS 报告查看器 + ASP.NET 凭据 401 异常

2023-12-31

我在 SQL2005 报告服务器上保存了一份报告,我想返回该报告的渲染 PDF。我在使用本地 *.rdlc 文件时发现了这一点(我已经在博客上介绍过它 http://www.jarrettmeyer.com/2009/09/reports-in-aspnet-mvc.html),但当 *.rdl 驻留在报告服务器上时则不然。我得到了401 未授权线路错误...

reportViewer.ServerReport.SetParameters(reportDefinition.ReportParameters);

这是用于呈现报告的方法。

public byte[] Render(IReportDefinition reportDefinition)
{
    var reportViewer = new ReportViewer();
    byte[] renderedReport;
    try
    {
        var credentials = new WindowsImpersonationCredentials();
        reportViewer.ServerReport.ReportServerUrl = new Uri("http://myssrsbox", UrlKind.Absolute);
        reportViewer.ServerReport.ReportServerCredentials = credentials;
        reportViewer.ServerReport.ReportPath = reportDefinition.Path;
        // Exception is thrown on the following line...
        reportViewer.ServerReport.SetParameters(reportDefinition.ReportParameters);

        string mimeType;
        string encoding;
        string filenameExtension;
        string[] streams;
        Warning[] warnings;

        renderedReport = reportViewer.ServerReport.Render(reportDefinition.OutputType, reportDefinition.DeviceInfo, out mimeType, out encoding, out filenameExtension, out streams, out warnings);
    }
    catch (Exception ex)
    {
        // log the error...
        throw;
    }
    finally
    {
        reportViewer.Dispose();
    }
    return renderedReport;
}

您缺少的另一件事是 Windows Impersonation Credentials 类。

public class WindowsImpersonationCredentials : IReportServerCredentials
{
    public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
    {
        authCookie = null;
        userName = password = authority = null;
        return false;
    }

    public WindowsIdentity ImpersonationUser
    {
        get { return WindowsIdentity.GetCurrent(); }
    }

    public ICredentials NetworkCredentials
    {
        get { return null; }
    }

    public override string ToString()
    {
        return String.Format("WindowsIdentity: {0} ({1})", this.ImpersonationUser.Name, this.ImpersonationUser.User.Value);
    }
}

您可能需要了解的其他事项...

  • 它正在 Intranet 上运行,并且模拟已打开。
  • 日志记录表明模拟用户设置正确。
  • This 确实有效在 Visual Studio 中运行时(http://localhost:devport),并且它确实有效在我的开发盒上运行时(http://localhost/myApplication). It 不起作用在我们的测试或生产服务器上运行时。
  • 我尝试过在 web.config 中使用和不使用 system.net.defaultProxy 设置的解决方案。两者都不起作用。

我究竟做错了什么?是服务器设置吗?是代码吗?是 web.config 吗?


我们终于弄清楚了问题所在。我们的网络管理员已禁用双跳,因此虽然模拟可以正确连接domain\jmeyer,应用程序仍在尝试连接到 SRS 盒domain\web01$。为什么要这样设置呢?因为双跳是一个巨大的安全漏洞。 (至少有人告诉我。这听起来像你会读到的东西吗?每日 WTF http://thedailywtf.com/?)

我们的解决方案是创建一个通用的domain\ssrs_report_services用户,并使用以下网络凭据与该用户连接

public class CustomCredentials : IReportServerCredentials
{
    public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
    {
        authCookie = null;
        userName = password = authority = null;
        return false;
    }

    public WindowsIdentity ImpersonationUser
    {
        get { return null; }
    }

    public ICredentials NetworkCredentials
    {
        get { return new NetworkCredential("ssrs_report_services", "password", "domain") ; }
    }    
}

以上是您可以在互联网上找到的经典示例解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSRS 报告查看器 + ASP.NET 凭据 401 异常 的相关文章

  • ASP.NET C# 中的自定义控件

    我创建了一个简单的自定义控件 它仅继承自Literal控件 并且还没有任何扩展 代码为空 命名空间 CustomControls 类名 文字 System Web UI WebControls Literal 接下来我要做的就是在aspx页
  • Response.Write - Internet Explorer 中的文件名编码错误

    我使用以下代码将文件从服务器发送到客户端 Response AppendHeader content disposition attachment filename FileName Response ContentType MimeTyp
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • MVC3 Controller 文件夹不会出现在 URL 中

    这只是一个例子 我不知道如何让它工作 在我的 MVC3 控制器文件夹中 如果我添加一个名为 Admin 的新文件夹 并添加一个带有操作 Index 的控制器 News 则当您尝试打开该 url 404 时 您会收到服务器错误 http ur
  • 依赖注入:没有为此对象定义无参数构造函数

    我正在尝试使用依赖项注入 NET Framework 4 6 ASP NET MVC 但收到错误 No parameterless constructor defined for this object 如果我还提供一个无参数构造函数Hom
  • 无法加载文件或程序集“System.Web.Razor”或其依赖项之一

    我在我的网站 Web 应用程序 中使用了 Umbraco 4 11 6 我的网站在 localhost 中工作 通过 Visual Studio 2012 和 IIS v7 进行测试 但是当我从互联网空间运行它时 出现错误 错误是 无法加载
  • 打印带有图像的 html(每个图像在单独的页面上)

    我有一个带有图像的 HTML img img img img 打印时 我希望每个图像都位于单独的页面上 根据打印尺寸 现在我把图像从中间切掉了 有什么办法可以解决吗 您可以尝试以下方法 p p
  • ASP.NET HTTP 请求是否会转换为 1 个线程?

    可以安全地假设当用户通过 HTTP 请求 aspx 页面时 ASP NET 至少为其创建 1 个线程吗 如果是这样 持续多久 如果 1000 人向同一个 aspx 页面发出 HTTP 请求 是否会涉及一些线程回收 因此不会产生不同的 100
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • ASP.NET 会话状态服务器与 InProc 会话

    运行会话状态服务器而不是 InProc 的开销性能损失是多少 重要吗 我知道您可以使用状态服务器重新启动 w3wp 并保留所有会话状态 这是相对于 InProc 的唯一优势吗 这取决于您的部署计划 在单个服务器上 损失很小 但好处同样有限
  • 使用 jquery ajax 和 asp.net 处理程序上传文件

    我正在努力让它工作 但我在上传文件时遇到错误 ASPX
  • 最佳实践:ASP.NET 中的 CSS 或主题?

    什么时候应该使用 ASP NET 主题 什么时候应该使用 CSS 使用其中一种相对于另一种有哪些优点或缺点 我建议使用 CSS 而不是主题 原因是在 CSS 中 您可以修改样式以使其适用于所有浏览器 您可以对主题做同样的事情 但微软的设计师
  • 使用 Razor View Engine 将内容从部分视图 ASP.NET MVC 3 注入特定部分

    我在我的中定义了此部分 Layout cshtml RenderSection Scripts false 我可以轻松地从视图中使用它 section Scripts Stuff comes here 我正在努力解决的是如何从部分视图中注入
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • 如何在asp.net背后的代码中获取css样式

    我需要从 asp net c 中的代码后面获取 css 样式 在网上没有找到解决方案 是否可以直接从 styles css 文件获取它 还是需要解决方法 我在我的网络应用程序中使用主题 但我还需要进行一些服务器处理 并且我需要 ccs 文件
  • CSS 样式在部分回发时停止工作

    在 ASP net C 应用程序中 我有一个带有自定义 css 的复选框 CSS 文件是 复选框
  • IIS Express 捕获所有子域 url

    我正在寻找 IIS Express 中子域包罗万象 url 的解决方案 基本上 我环顾四周并找到了如何在 IIS Express 中创建域 子域 它很容易找到 我所要做的就是在 IIS Express 的 ApplicationHost c
  • 刷新/重新加载 ASP.net 的副作用?

    我在 Web 和 ASP Net 开发方面相对较新 所以请耐心等待 在测试我们的网页的过程中 我注意到 如果用户单击 刷新 重新加载 并在 重新发送信息 对话框提示时单击 重试 则无论用户选择之前触发的最后一个事件如何到 刷新 随后将再次被
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s

随机推荐

  • GZIP压缩级别对解压有影响吗

    据我了解 GZIP 是 LZ77 和 Huffman 编码的组合 可以配置 1 9 之间的级别 其中 1 表示最快的压缩 较少压缩 9 表示最慢的压缩方法 最佳压缩 我的问题是 级别的选择only影响压缩过程 或者根据用于压缩的级别 解压缩
  • 角度测试随机中断:“未捕获类型错误:您在预期流的位置提供了‘未定义’。”

    我们有一个中等大小的 Angular 应用程序 目前约有 700 个单元测试 几周前 完美的测试开始出现问题 更奇怪的是 运行测试两次可能会产生不同的结果 即不同的测试可能会失败 在控制台中 我们总是发现错误 未捕获的类型错误 您在需要流的
  • PHP,在类属性上调用静态方法

    我希望将对象存储为类的属性 然后我希望能够通过直接引用该属性来调用该类的静态方法 考虑以下 class myModel public static function all return 1 class myClass public mod
  • 无法在 Visual Studio 2022 上热重加载

    我将我的 Web 应用程序从 Visual Studio 2019 移至 2022 预览版 7 但我无法热重载 即使是很小的更改 例如更改 if a b to if a b 并且需要停止调试器 并且我不确定 COMPLUS ForceENC
  • 像音乐应用程序一样自定义 UISlider

    我构建了一个自定义滑块来显示音乐曲目播放的进度并允许在曲目内进行擦洗 两者都运行良好 但一旦停止拖动并且重新定位滑块 就会出现轻微的滞后 和跳跃的运动 Apple Music 应用程序滑块是无缝的 scrubberSlider Scrubb
  • 多维数组到 MVC 控制器

    我有以下控制器方法 public ActionResult Export string data string workbookName ExcelWorkbook workbook new ExcelWorkbook workbook A
  • 如果使用 Match_Constraints,嵌套约束布局不会显示

    我正在尝试在 Android 中创建一个嵌套的 ConstraintLayout 目标是在约束布局内左侧有一个图像 右侧有另一个约束布局 如下图所示 It correctly shows on the preview but inside
  • 在 Internet Explorer 中启用 SOCKS 4a/5

    出于匿名目的 我们希望使用不断变化的代理服务器 在搜索过程中 我们偶然发现了 TOR 项目 它非常适合正常浏览 但是我们还需要软件的代理 遗憾的是 这个第三方软件使用互联网浏览器作为基础 因此我们无法使用推荐的浏览器 更糟糕的是 IE 的代
  • bashrc if:表达式语法错误

    我编写了以下 bashrc bashrc Source global definitions if f etc bashrc then etc bashrc fi User specific aliases and functions fu
  • 更新了 SDK 版本,出现 ClassNotFoundException: android.support.v4.view.ViewPager

    当我在处理 Android 项目时 我发现 Logcat 很烦人 没有将滚动条保持在给定点 并了解到更新 SDK 版本会添加一个暂停按钮来解决此问题 我更新到 SDK 版本 17 现在遇到了一些以前没有的奇怪问题 我删除并添加了 andro
  • VB.Net:测试多个值是否相等?

    如何测试一行中多个值的相等性 基本上我想做 if val1 val2 val3 valN 但在 VB Net 中 If val1 valN AndAlso val2 valN AndAlso Then End If 当测试多个值时 这可能会
  • 如何在SD卡上创建私人文件夹

    我的应用程序用于安全目的 因此 从我的应用程序用户捕获的照片中 所有照片都存储在一个文件夹中 该文件夹不应从任何其他应用程序访问 并且当设备连接到计算机系统时不应授予访问权限 如果用户想查看这些图像 他应该只能从我的应用程序访问 根据这个g
  • 设置 UIView 的 self 背景颜色

    我正在尝试从自定义视图类的 m 内部执行此操作not从 XIB 加载 而是以编程方式加载 id initWithFrame CGRect frame self super initWithFrame frame if self Initia
  • 未找到 ${env.JAVA_HOME} - Ant

    在我的 build xml 文件中 我有以下几行
  • 在 MySQL 中正确实现超类型子类型

    下面是一个数据库图表 我试图在其中确定适当的设计 这里有一些注意事项 员工 经理与客户相关联 The partyid是一种在全球范围内代表一个人的方式 客户 员工 经理 需要一直向下传播吗 它应该是所有表中的主键还是仅代表个人的表中的主键
  • 无法解析方法 getMap()

    我试图让地图片段在我的应用程序中工作 但在尝试获取 GoogleMap 对象时仍然出现错误 FragmentWithMap java import android Manifest import android app Activity i
  • string::size_type 而不是 int

    const std string size type cols greeting size pad 2 2 Why string size type int应该可以工作 它包含数字 空头也能容纳数字 与签名字符一样 但这些类型都不能保证足够
  • 当委托构造函数抛出异常时,内存是否会自动回收?

    从此 当委托构造函数抛出异常时 析构函数是否被调用 https stackoverflow com q 17657761 14065 class X public X X int X throw std exception X double
  • 将 GitHub 文件(和更新)获取到 Ubuntu Web 服务器上

    我正在设置一个多用户 多服务器环境 所有开发人员都将使用 Git 并从 GitHub 等克隆各种存储库 在我控制的一个帐户中 现在 我如何将文件从 GitHub 获取到服务器 大约 5 个 首先 我正在考虑某种自动化方式将更新从 GutHu
  • SSRS 报告查看器 + ASP.NET 凭据 401 异常

    我在 SQL2005 报告服务器上保存了一份报告 我想返回该报告的渲染 PDF 我在使用本地 rdlc 文件时发现了这一点 我已经在博客上介绍过它 http www jarrettmeyer com 2009 09 reports in a