Eri*_*icG 11 asp.net reportviewer reporting-services
搜索了很多类似的帖子,解决方法,我决定自己发帖子.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0433:
The type
'Microsoft.Reporting.WebForms.ReportViewer'
exists in both
'c:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\reportmanager\Bin\ReportingServicesWebUserInterface.dll'
and
'c:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll'
Run Code Online (Sandbox Code Playgroud)
更新:
大多数similair帖子的问题是他们的2个冲突的DLL有8.0.0.0和9.0.0.0版本左右.或者它们位于TEMPORARY文件夹中.我不认为我的问题可以通过此类帖子类似地解决.
在我们的ReportServer上有一个Report.aspx,它呈现一个报告.我想用我自己的文件替换这个文件,修改页面布局,如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Report.aspx.cs" Inherits="WebApplication._Default" %>
<%@ Register
Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms"
TagPrefix="rsweb" %>
<!DOCTYPE>
<html>
<head runat="server"></head>
<body>
<div>
<form id="reportform" runat="server">
<div>
<rsweb:ReportViewer
ID='ReportViewerRoot'
runat='server'
ProcessingMode='Remote'
Height='100%'
Width='100%'
AsyncRendering='False'
SizeToReportContent='True'
/>
</div>
</form>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这需要引用MS.ReportViewer.WebForms.DLL
我的Project.csproj文件有这个:
<Reference Include="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
Run Code Online (Sandbox Code Playgroud)
我无法在C:\ WINDOWS中卸载任何DLL,因为它说它是其他应用程序所必需的.

我也尝试修改web.config,添加一些dependentAssemnly,但不确定什么是有用的(它对上面提到的版本差异很有用).
另外我在web.config中有这些行:
<compilation defaultLanguage="c#" debug="false" tempDirectory="C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\RSTempFiles\">
<assemblies>
<clear />
<add assembly="ReportingServicesWebServer" />
</assemblies>
</compilation>
Run Code Online (Sandbox Code Playgroud)
谢谢您的意见.我期待收到你的建议.
Eri*_*icG 10
满意的解决方案!
在aspx中插入ReportViewer对象时,会自动添加DLL引用(并指向GAC WebForms).我需要这个引用(无法成功手动引用GAC DLL),然后我删除了aspx中的ReportViewer.另外,我添加了对冲突的DLL ReportingServicesWebUserInterface.DLL的引用.这会将问题(从post发送的错误输出)移到VS,而不是仅在SSRS服务器上.
添加新的ReportViewer()时,我将在VS中收到错误.
解决方案如下:给不需要的DLL一个别名(实际上没有在代码中使用它).这将告诉编译器在使用WebForms时不使用此DLL.见图

Report.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Report.aspx.cs" Inherits="MyWebApplication._Default" %>
<!DOCTYPE>
<html>
<head runat="server">
<title></title>
</head>
<body>
<div>
<div style="background-color:Red;width:100px;height:100px;">Hoi</div>
</div>
<form id="formID" runat="server">
test
</form>
<div>haha</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Report.aspx.cs
public partial class _Default : System.Web.UI.Page
{
ReportViewer ReportViewerRoot;
protected void Page_Load(object sender, EventArgs e)
{
AddRV();
}
public void AddRV()
{
ReportViewerRoot = new ReportViewer()
formID.Controls.Add(ReportViewerRoot);
SetReportViewer();
SetServerReport();
}
public void SetReportViewer()
{
ReportViewerRoot.ID = "ReportViewerRoot";
ReportViewerRoot.ProcessingMode = ProcessingMode.Remote;
}
private void SetServerReport()
{
ServerReport serverReport = ReportViewerRoot.ServerReport;
// Set the report server URL and report path
serverReport.ReportServerUrl = new Uri("http://localhost/reportserver");
serverReport.ReportPath = Request.QueryString["ItemPath"];
serverReport.Refresh();
}
}
Run Code Online (Sandbox Code Playgroud)
参考源:Extern别名演练
小智 5
我解决了从我的 Web.Config 中删除一个程序集的问题 在我的情况下,版本 10 和 11 一起出现了。我从配置中删除以下代码
<add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77683 次 |
| 最近记录: |