【问题标题】:File does not upload to Report Server文件未上传到报表服务器
【发布时间】:2011-03-16 15:47:06
【问题描述】:

我正在尝试将报告从文件系统上传到报告服务器,但由于某种原因,报告在我上传时没有出现

下面是这段代码:

WebClient reptserv = new WebClient();
        File.WriteAllLines(@"C:\HereGoesNothing.rdl", lines);
        Uri address = new Uri("http://localhost/reportserver");
        reptserv.UploadFileAsync(address, @"C:\HereGoesNothing.rdl");           

报告在报告生成器中运行得很好,所以我知道这不是问题,但在那之后我很难过。

【问题讨论】:

  • 鉴于它是一个虚拟目录等,我不完全确定您是否可以将它与 WebClient 一起发布,但我假设您已经对此进行了调查。我会添加一个 UploadFileCompleted 事件来查看它返回的内容 (msdn.microsoft.com/en-us/library/…)

标签: c# report webclient reportserver


【解决方案1】:

请看下面的问题答案,这是实现您想要做的更好的方法... Upload a report file to Report manager via .net application?

基本上你给报表服务器添加一个服务引用,然后通过代理类上传,也看:http://msdn.microsoft.com/en-us/library/aa237438%28SQL.80%29.aspx

public static void createReport()
{
  ReportingService rs = new ReportingService();
  rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

  Byte[] definition = null;
  Warning[] warnings = null;
  string name = "HereGoesNothing";

  try
  {
     FileStream stream = File.OpenRead(@"C:\HereGoesNothing.rdl");
     definition = new Byte[stream.Length];
     stream.Read(definition, 0, (int) stream.Length);
     stream.Close();
  }

  catch(IOException e)
  {
     Console.WriteLine(e.Message);
  }

  try
  {
     warnings = rs.CreateReport(name, "/", false, definition, null);

     if (warnings != null)
     {
        foreach (Warning warning in warnings)
        {
           Console.WriteLine(warning.Message);
        }
     }

     else
        Console.WriteLine("Report: {0} created successfully with no warnings", name);
  }

  catch (SoapException e)
  {
     Console.WriteLine(e.Detail.InnerXml.ToString());
  }

}

【讨论】:

  • 谢谢,这看起来是我需要的,唯一的区别是我使用的是 SS 2008 R2,所以我需要使用 ReportingService2010 类。但是该课程不存在,我发现其他一些人也遇到了同样的问题。 social.msdn.microsoft.com/Forums/en/sqlreportingservices/thread/… 有什么想法吗?
  • 您是否尝试将其添加如下:http:///reportserver/reportservice2010.asmx?wsdl(来自msdn.microsoft.com/en-us/library/ms155134.aspx)。如果有效,请记住将答案标记为正确
  • 是的,这就是我正在做的,该类似乎不存在。如果它有效,我会将它标记为正确,因为这个问题我还没有尝试过。
  • 我没有R2但是试试这个,不是添加服务引用,而是添加web引用:右键服务引用-->高级-->添加Web引用,然后添加http: ///reportserver/reportservice2010.asmx?wsdl,记住你给它的服务名称。然后尝试访问该类(可能是 ReportService 或 ReportExecution 服务)。因此,如果您将服务命名为 rs,则 rs.ReportExecutionService sr = new rs.ReportExecutionService();
  • 我设法让它实际使用命令提示符方法工作,但由于某种原因他们弃用了 CreateReport 方法,所以现在我仍在尝试弄清楚如何做到这一点。既然您确实回答了我的问题,我会将其标记为正确,但如果您对执行此操作的新方法有任何见解,我将不胜感激。
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多