我已经仿照MSDN上的例子做了,代码如下:
ReportingService rs = new ReportingService();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;Property name = new Property();
name.Name = "cbno";Property description = new Property();
description.Name = "cbprice";Property[] properties = new Property[2];
properties[0] = name;
properties[1] = description;try
 {
Property[] returnProperties = rs.GetProperties("/reportservice/ReportSale", properties);
   
foreach (Property p in returnProperties)
{
Response.Write(p.Name + ": " + p.Value);
}
} catch (Exception e)
{
Console.WriteLine(e.Message);
}
但是我的报表显示的路径是
http://localhost/reportserver?%2f%e9%94%80%e5%94%ae%e7%bb%84%e7%bb%87%e8%b4%b9%e7%94%a8%e6%b8%85%e5%8d%95%e6%8a%a5%e8%a1%a8%2fReportSale&rs:Command=Render
我也不知道怎么回事!请高人指教,急,谢谢了!

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=7959F820-8B48-42ED-98A1-C8AB3E940A9B
      

  2.   

    创建 XML Web services 代理
    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconcreatingwebserviceproxy.htm按照定义,可以使用行业标准协议(包括 SOAP)通过网络与 XML Web services 进行通信。也就是说,客户端和 XML Web services 使用 SOAP 消息进行通信,SOAP 消息将输入和输出参数封装为 XML。幸好对于 XML Web services 客户端来说,代理类处理将参数映射为 XML 元素,然后通过网络发送 SOAP 消息这些工作。只要存在服务说明并且该服务说明符合 Web 服务描述语言 (WSDL),就可以生成代理类。服务说明定义如何与 XML Web services 进行通信。使用服务说明,可以使用 Wsdl.exe 工具创建一个代理类。接着,XML Web services 客户端可以调用该代理类的方法,而该代理类又通过处理往返于 XML Web services 的 SOAP 消息,通过网络与 XML Web services 进行通信。由于代理类通过 Internet 与 XML Web services 通信,最好验证一下代理类的 Url 属性引用的是否是受信任的目标。默认情况下,代理类在 HTTP 之上使用 SOAP 与 XML Web services 进行通信。但是,Wsdl.exe 可以生成使用 HTTP-GET 协议或 HTTP-POST 协议与 XML Web services 进行通信的代理类。若要指定代理类应该使用 HTTP-GET 或 HTTP-POST,请向 Wsdl.exe 工具提供 /protocol 开关,如下表所述。生成 XML Web services 代理类 在命令提示处,使用 Wsdl.exe 创建代理类,(至少)指定到 XML Web services 或服务说明的 URL 或到保存的服务说明的路径。 
    Wsdl /language:language  /protocol:protocol /namespace:myNameSpace /out:filename /username:username /password:password /domain:domain <url or path>注意:之前列出的参数是 Wsdl.exe 工具通常使用的参数。有关 Wsdl.exe 工具的完整语法,请参见 Web 服务描述语言工具 (Wsdl.exe)。 参数 值 
    <url or path> 到服务说明(以 Web 服务描述语言说明 XML Web services 的文件)的 URL 或路径。 
    如果您指定一个文件,则提供包含服务说明的文件。例如:mywebservice.wsdl如果您指定一个 URL,则该 URL 必须引用 .asmx 页或返回服务说明。对于使用 ASP.NET 创建的 XML Web services,您可以通过将 ?WSDL 追加到 XML Web services 的 URL 来返回服务说明。例如:http://www.contoso.com/MyWebService.asmx?WSDL
     
    /language:language 生成代理类使用的语言。可用选项包括 CS、VB 和 JS,分别指 C#、Visual Basic .NET 和 JScript .NET。默认语言是 C#。(可选) 
    /protocol:protocol 用于与 XML Web services 方法进行通信的协议。可用选项包括 SOAP、HTTP-GET 和 HTTP-POST。默认协议是 SOAP。(可选) 
    /namespace:myNameSpace 生成的代理的命名空间。默认值是全局命名空间。(可选) 
    /out:filename 要创建的包含代理类的文件的名称。默认名称基于实现 XML Web services 的类的名称。(可选) 
    /username:username 当连接到要求身份验证的 Web 服务器时所使用的用户名。(可选) 
    /password:password 当连接到要求身份验证的 Web 服务器时所使用的密码。(可选) 
    /domain:domain 当连接到要求身份验证的 Web 服务器时所使用的域。(可选) 生成的代理类详细信息
    当 Wsdl.exe 用于生成代理类时,将以指定的语言生成一个源文件。该文件包含公开 XML Web services 每个 XML Web services 方法的同步和异步方法的代理类。例如,如果一个 XML Web services 包含一个名为 Add 的 XML Web services 方法,则代理类具有以下方法用来调用 Add XML Web services 方法:Add、BeginAdd 和 EndAdd。代理类的 Add 方法用于与 Add XML Web services 方法进行同步通信,但 BeginAdd 和 EndAdd 方法用于和 XML Web services 方法进行异步通信。有关与 XML Web services 方法异步通信的更多信息,请参见与 XML Web services 进行异步通信。生成的代理类的每个方法都包含适当的代码与 XML Web services 方法进行通信。如果在 XML Web services 和代理类通信过程中出现错误,则将引发一个异常。有关处理异常的详细信息,请参见在 XML Web services 中处理和引发异常。在 XML Web services 方法和关联的代理类方法中的定义顺序之间,参数顺序可能有所不同。在多数情况下,参数顺序相同。但是,如果 XML Web services 需要 Document 格式的 SOAP 消息,则将出现一种参数顺序不相同的情况。如果 XML Web services 方法在定义输入参数之前定义了输出参数,则在代理类中输出参数放置在所有输入参数之后。例如,在下面的代码示例中,XML Web services 方法 MyWebMethod 在声明 inStr 输入参数之前声明了 outStr 输出参数。但是,在代理类中,在声明 outStr 之前先声明 inStr 参数。在某些情况下,由 WSDL.exe 生成的代理类会使用一种不常见的命名方法,将对象强制转换成服务说明中指定的类型。因此,代理类中的生成类型可能不是开发人员想要或预期的类型。例如,当 WSDL.exe 在服务说明中遇到 ArrayList 类型时,它将在生成的代理类中创建一个“对象数组”。若要确保对象类型转换正确,请打开包含生成的代理类的文件,将所有不正确的对象类型更改成所需的对象类型。[Visual Basic]
    ' Declare MyWebMethod in the XML Web service.
    MyWebMethod(ByRef outStr As String, inStr As String)' This is the corresponding MyWebMethod in the proxy class.
    MyWebMethod(inStr As String, ByRef outStr As String)[C#]
    // Declare MyWebMethod in the XML Web service.
    MyWebMethod(out string outStr, string inStr)// This is the corresponding MyWebMethod in the proxy class.
    MyWebMethod(string inStr, out string outStr).在某些情况下,由 WSDL.exe 生成的代理类会使用一种不常见的命名方法,将对象强制转换成服务说明中指定的类型。因此,代理类中的生成类型可能不是开发人员想要或预期的类型。例如,当 WSDL.exe 在服务说明中遇到 ArrayList 类型时,它将在生成的代理类中创建一个 Object 数组。若要确保对象类型转换正确,请打开包含生成的代理类的文件,将所有不正确的对象类型更改成所需的对象类型。Wsdl.exe 引发的警告
    当向 Wsdl.exe 提供多个服务说明时,可能引发的两个错误信息如下: 警告:忽略具有来自 <schema URI> 位置的 TargetNamespace=<schema namespace> 的重复服务说明。 
    指示所提供的服务说明中两个或多个服务说明的 TargetNamespace 是相同的。因为 TargetNamespace 被认为是特定 XML 文档的唯一标识符,而在这里它是服务说明,所以 Wsdl.exe 认为两个服务说明是相同的。在这种情况下,Wsdl.exe 只为其中一个服务说明生成代理类。如果这不是您需要的结果,则可以进行更改。对于表示使用 ASP.NET 创建的 XML Web services 的服务说明,您可以对实现该 XML Web services 的类应用指定唯一 Namespace 属性的 WebService 特性。该 Namespace 属性然后在服务说明中用作 TargetNamespace,以唯一标识该 XML Web services。有关设置 Namespace 属性的更多信息,请参见应用 WebService 属性。 警告:忽略具有来自 <schema URI> 位置的 TargetNamespace=<schema Namespace> 的重复架构。 
    指示所提供的服务说明中两个或多个 XML 架构的 TargetNamespace 是相同的。因为 TargetNamespace 被认为是特定 XML 文档的唯一标识符,而在这里它是 XML 架构,所以 Wsdl.exe 认为这两个 XML 架构是相同的。在这种情况下,Wsdl.exe 只为其中一个架构生成类。如果这不是想要的结果,则必须将每个 XML 架构的 TargetNamespace 更改为唯一的 URI。具体如何修改 TargetNamespace 取决于特定 XML 架构的源。