12

我有:

private readonly ReportingService2010 _rs = new ReportingService2010();

错误:

The type or namespace name 'ReportingService2010' could not be found (are you missing a using directive or an assembly reference?)

设置了对 SSRS 服务的引用。正如我所料,该参考资料没有让我访问 ReportingService2010。最接近的是:

MySsrsServiceNamespace.ReportingService2010SoapClient

我应该如何使用该ReportingService2010课程? MSDN模糊地列出了这个类。

请注意我尝试使用ReportingService2010SoapClient. 此类与 ReportingService2010 的文档不匹配。例如,ListChildren()只接受 4 个参数且 Url 属性不存在。

4

4 回答 4

39

刚刚遇到了完全相同的问题。ReportingService2010SoapClient 类可用,但 ReportingService2010 类不可用。快把我逼疯了。我已将其添加为“服务引用”,但您必须将其添加为“Web 引用”,如下所示:

  1. 删除旧的服务参考

  2. 右键单击引用。“添加服务参考”对话框出现。

  3. 现在不要输入 WSDL URL,而是:单击左下角的“高级”按钮。

  4. “服务参考设置”对话框出现。

  5. 在左下角,单击“添加 Web 引用”按钮。

  6. 现在输入 WSDL 的 URL。(对我来说是 servername/ReportServer/ReportService2010.asmx)

  7. 单击右侧的小箭头,加载需要很长时间。

  8. 命名网络参考,我使用“ReportingService2010WebReference”,但 ReportingService2010 可能也可以。

  9. 点击“添加参考”

  10. 在您的代码中,将您的 using 语句更新为“使用 .ReportingService2010WebReference(或您选择的任何名称)

代码:

private MySol.ReportService2010WebReference.ReportingService2010 rsClient;

rsClient = new ReportingService2010();
rsClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

CatalogItem[] items = null;

items = rsClient.ListChildren("/", false);

foreach (var item in items)
{
    tr.ErrorMessage += (item.Path + " " + item.CreatedBy);
}

在第一次尝试中工作。Web.config 文件没有被触及。

于 2014-08-26T02:09:59.533 回答
6

创建一个代理类并将其包含在您的应用程序中,或者添加一个对 ReportingService 的 Web 引用。该教程可在此处获得:

http://technet.microsoft.com/en-us/library/ms155134.aspx

请注意,如果您要使用代理类并且使用多个端点(ReportExecution、ReportingService),您应该在不同的命名空间上生成代理类,否则会发生冲突。

你是通过网络参考做的吗?如果是这样,请尝试在命令行中使用 WSDL。命令行语法:

wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://serverName/reportserver/ReportService2010.asmx?wsdl
于 2013-09-23T16:40:48.623 回答
1

不添加 Webreference

按照以下步骤,它会工作得很好。

1)确保你有 .netframework >= 4.6.1

2)以管理员身份运行命令提示符

3) cd C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 工具

4) 生成类:wsdl /proxyusername:Username /proxypassword:Password -out:Reportingservice2010.cs http://Servername/Reportserver/ReportService2010.asmx?wsdl

附加)运行 wsdl /? 寻求帮助文件将输出到:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools

5) 将 .cs 文件添加到您的项目中

于 2016-11-24T13:15:24.147 回答
0

改变这个;

private readonly ReportingService2010 _rs = new ReportingService2010()

private readonly ReportingService2010SoapClient _rs = new ReportingService2010SoapClient()

您正在尝试为不存在的类创建一个实例,并添加引用会创建一个相应的 *Client 类供您实例化。

于 2013-09-23T16:29:56.657 回答