Ssrs 2008 SSRS 2008执行服务加载报告错误

Ssrs 2008 SSRS 2008执行服务加载报告错误,ssrs-2008,Ssrs 2008,我使用的是SSR2008(不是R2) 我有一个部署到dev服务器的报告,我试图通过调用执行服务将该报告呈现为pdf格式 我得到的错误是 在本机模式下运行的报表服务器上不支持此操作。-->Microsoft.ReportingServices.Diagnostics.Utilities.OperationNotSupportedNativeModeException:在本机模式下运行的报表服务器上不支持此操作 我注意到两件事:一是web服务wsdl显示LoadReport有两个参数—report

我使用的是SSR2008(不是R2)

我有一个部署到dev服务器的报告,我试图通过调用执行服务将该报告呈现为pdf格式

我得到的错误是 在本机模式下运行的报表服务器上不支持此操作。-->Microsoft.ReportingServices.Diagnostics.Utilities.OperationNotSupportedNativeModeException:在本机模式下运行的报表服务器上不支持此操作

我注意到两件事:一是web服务wsdl显示LoadReport有两个参数—report path和history id,但当我为ReportExecution2005.asmx生成服务引用时,LoadReport方法有5个参数:trusteduserheader、reportPath、historyid、serviceinfoheader和executionheader

我已经尝试在url末尾添加带有和不带?wsdl的服务引用,但结果是相同的

以下是我使用的代码:

ReportExecutionServiceSoapClient rs = new ReportExecutionServiceSoapClient("ReportExecutionServiceSoap", "http://xxx:80/ReportServer/ReportExecution2005.asmx");            
        rs.ClientCredentials.Windows.ClientCredential = new NetworkCredential("aaa", "aaa", "aaa"); 

        rs.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;



 // Render arguments

    byte[] result = null;
    string reportPath = "/Invoices/InvoiceStandard";
    string format = "PDF";
    string historyID = null;
    string devInfo = "";

    // Prepare report parameter.

    ParameterValue[] parameters = new ParameterValue[3];

    parameters[0] = new ParameterValue();
    parameters[0].Name = "PartyID";
    parameters[0].Value = "19758";
    parameters[1] = new ParameterValue();
    parameters[1].Name = "Contract";
    parameters[1].Value = "17703"; // June
    parameters[2] = new ParameterValue();
    parameters[2].Name = "FinancialPeriod";
    parameters[2].Value = "MAR-2012";
    string encoding="";
    string mimeType="";
    string extension="";
    Warning[] warnings = null;
    string[] streamIDs = null;

    ExecutionInfo execInfo = new ExecutionInfo();
    TrustedUserHeader trusteduserHeader = new TrustedUserHeader();
    ExecutionHeader execHeader = new ExecutionHeader();
    ServerInfoHeader serviceInfo = new ServerInfoHeader();


    execHeader = rs.LoadReport(trusteduserHeader, reportPath, historyID, out serviceInfo, out execInfo);

    rs.SetExecutionParameters(execHeader, trusteduserHeader, parameters, "en-us", out execInfo);

    try
    {                
        rs.Render(execHeader,
                    trusteduserHeader,
                    format, 
                    devInfo, 
                    out result,
                    out extension, 
                    out encoding, 
                    out mimeType, 
                    out warnings, 
                    out streamIDs);
    }
这是我的web.config

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="ReportExecutionServiceSoap" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows"/>
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://xxx:80/ReportServer/ReportExecution2005.asmx"
        binding="basicHttpBinding" bindingConfiguration="ReportExecutionServiceSoap"
        contract="SSRS.ReportExecutionServiceSoap" name="ReportExecutionServiceSoap" />
    </client>
  </system.serviceModel>
</configuration>

此报表是从某个前端加载的,还是从DLL加载的?在我看来,您正在使用ASP.net应用程序。在这种情况下,您可以使用reportViewer对象为您拉取报告,所有繁重的工作都可以由reportViewer完成,然后您可以将文件保存为PDF 用这样的东西

 reportViewer.ServerReport.ReportServerUrl = new Uri(Config.ReportServerURL);
 reportViewer.ServerReport.ReportPath = String.Format("{0}/{1}", Config.ReportServerEnvironment, reportName);
 reportViewer.ServerReport.ReportServerCredentials = new ReportsCredentials(Config.ReportServerUser, Config.ReportServerPassword, Config.ReportServerDomain);

reportViewer.GetDocumentStream(SSRSFormatType.Pdf, documentName);

此处reportViewer是对屏幕上reportViewer对象的引用

我对SSRS 2008 R2也有同样的问题,但我不想求助于调用报表查看器控件

上面,Rick Hodder使用了以下语句:

TrustedUserHeader trusteduserHeader = new TrustedUserHeader();
如果SSRS安装未配置SSL连接证书,则此语句将导致他遇到的
OperationNotSupportedNativeModeException
错误。检查SSRS日志中是否有包含以下内容的错误条目:

错误:在本机模式下不支持TrustedHeader

如果是这种情况,则需要为受信任的头添加或使用null

TrustedUserHeader trusteduserHeader = null;

事实上,这就是我最后要做的——谢谢布彭德拉!谢谢你!我当时正使劲把头撞在墙上,想让它工作起来。果然,服务器上的http和trustedheader也出现了同样的异常。非常感谢,我花了3天时间试图找出那个“红鲱鱼”错误消息。这救了我。