我在这里描述的问题只影响到我的开发机器。部署到不同的服务器(测试和生产)不会显示这种行为。
我有一个简单的ASPX (ReportViswer.aspx)页面,其中包含一个DevExpress报表查看器,如下所示:
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteV2.Master" AutoEventWireup="true" CodeBehind="ReportViewer.aspx.cs" Inherits="MyApp.Platform.Reports.ReportViewer" %>
<%@ Register Assembly="DevExpress.XtraReports.v16.1.Web, Version=16.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.XtraReports.Web" TagPrefix="dx" %>
<asp:Content ID="cntPageTabs" ContentPlaceHolderID="cphPageTabs" runat="server">
<ul class="nav nav-tabs">
<li class="active">
<a href="#tab-page" data-toggle="tab" aria-expanded="true" class="myapp-ctrl-noprogress">Page</a>
</li>
</ul>
<div class="tab-content tab-content-for-page">
<div class="tab-pane active" id="tab-page">
<asp:Button ID="btnToolbarClose" runat="server" Text="Close" CssClass="btn btn-default" OnClick="btnToolbarClose_OnClick"/>
</div>
</div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="cphMainContent" runat="server">
<dx:ASPxDocumentViewer ID="ReportDocumentViewer" runat="server"></dx:ASPxDocumentViewer>
</asp:Content>除了实例化XtraReport并将其分配给报表查看器之外,页面本身并没有做什么真正聪明的事情:
protected void Page_Load(object aSender, EventArgs aEventArgs)
{
if (!IsPostBack)
{
if (Session["ReportParams"] == null)
{
ShowErrorMessage("No report information was passed.");
return;
}
ReportParametersHelper reportParams = new ReportParametersHelper();
reportParams.Deserialize(Session["ReportParams"].ToString());
XtraReport reportToView = null;
switch (reportParams.ReportName)
{
case ReportNames.REPORT_DISCOVERY_DOCUMENT:
reportToView = new ReportDiscoveryDocument();
(reportToView as ReportEmailMessage).Activate(ReportParams.Params);
break;
}
}
}Response.Redirect(~/reports/reportviewer) 4.6.1解决方案是针对我的开发机器上的Windows 10上的IIS 10运行的,当我试图通过一个简单的WebForms打开上面的页面时,会提示我输入用户名和密码:

或者最终找不到错误的资源:

应用程序在配置为: DefaultApp池时运行:

所以我的问题是:
DevExpress一直没有帮助,因为他们想要一个小的示例项目-虽然我知道测试线束没有显示这种行为,所以它是在这个更大的项目。
因此,任何见解或想法将不胜感激,我很高兴提供更多的诊断信息,视需要。
发布于 2016-09-30 17:13:20
此问题可能是由您的开发机器路由设置而不是由DevExpress组件引起的。如果是这样的话,即使您将ASPxDocumentViewer控件从WebForm中移除,也可以复制它。
尝试将以下路由格式传递给您的Response.Redirect方法"~/reports/reportviewer.aspx“。这是默认的ASP.NET WebForms路由格式,当您使用"~/reports/reportviewer“IIS尝试打开文件夹而不是网页时,将请求授权并引发404错误。由于不同的路由设置,此问题在另一台计算机上不可复制。有关路由如何在ASP.NET路由中工作的更多信息,请参见ASP.NET MSDN文章。
https://stackoverflow.com/questions/39746744
复制相似问题