2010-08-05 28 views
23

Tôi có báo cáo SSRS 2005 mà tôi muốn sử dụng dịch vụ web để truy xuất một số dữ liệu. Webservice này sẽ có một vài tham số.SSRS 2005 - Dữ liệu webservice XML - các thông số không được chuyển đến webservice

Là một thử nghiệm tôi thiết lập một dự án trình diễn webservice rất đơn giản trên môi trường địa phương của tôi:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class Service : System.Web.Services.WebService 
{ 
    public Service() {} 

    [WebMethod] 
    public int DivideByTwo(int numberIn) { 
     return numberIn/2; 
    } 
} 

báo cáo thử nghiệm của tôi sau đó có một Dataset sử dụng một nguồn dữ liệu XML, với (localhost) URL của webservice trong chuỗi kết nối.

Trong chuỗi truy vấn của dataset Tôi có những điều sau đây, dựa trên MS tài liệu (http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx):

<Query> 
    <SoapAction>http://tempuri.org/DivideByTwo</SoapAction> 
    <Method Namespace="http://tempuri.org/" Name="DivideByTwo" /> 
    <Parameters> 
     <Parameter Name="NumberIn"> 
      <DefaultValue>100</DefaultValue> 
     </Parameter> 
    </Parameters> 
    <ElementPath IgnoreNamespaces="True">*</ElementPath> 
</Query> 

Vấn đề tôi đang gặp là, mặc dù các webservice được kích hoạt, các tham số không phải là được chuyển đến webservice và do đó giá trị trả về luôn là 0. Tôi đã sửa lỗi webservice và đặt một điểm ngắt trong phương thức DivideByTwo() và khi cuộc gọi webservice được kích hoạt từ báo cáo và điểm ngắt được nhấn, giá trị numberIn luôn luôn là 0 bất kể những gì tôi đặt trong phần tử của XML truy vấn.

Tôi cũng đã cố gắng chỉ định thông số "NumberIn" trong tab "Tham số" của hộp thoại Tập dữ liệu (với giá trị được cung cấp) và xóa phần tử khỏi XML truy vấn - kết quả giống nhau.

Tôi đã tìm thấy một số bài đăng trên web phác thảo cùng một vấn đề nhưng dường như không thể tìm ra giải pháp và đã xé tóc ra trong vài giờ qua. Bất kì sự trợ giúp nào đều được đánh giá cao.

+4

Bạn có lỗi đánh máy nhỏ. Vì các tham số phân biệt chữ hoa chữ thường nên truy vấn của bạn phải là . Tôi đang gặp một vấn đề tương tự với các thông số không nhận được thông qua với tất cả các trường hợp chính xác .. không chắc chắn đó là vấn đề nhưng đáng thử. – DavveK

+2

Cảm ơn DaweK.Tôi hỏi điều này khá lâu trước đây nhưng tôi nghi ngờ đó là vấn đề vì vấn đề dường như chỉ 'biến mất' sau một thời gian và tôi không thể xác định những gì tôi đã làm để khắc phục vấn đề. – Michael

Trả lời

1

Như DavveK đã đề cập, có vẻ như đó là một lỗi đánh máy đơn giản với cách viết hoa của thông số của bạn.

định nghĩa dịch vụ của bạn đang tìm kiếm:

numberIn 

khi DataSet XML của bạn cung cấp:

NumberIn 

Khi bài viết bạn tham khảo đề cập đến, paramaters là trường hợp nhạy cảm. Xem # 8 tại http://msdn.microsoft.com/en-us/library/aa964129(SQL.90).aspx

0

Điều này có thể xảy ra do hai lý do.

1) Tên tham số không khớp chính xác. Lưu ý rằng tên tham số phân biệt chữ hoa chữ thường.

2) Không gian tên không khớp chính xác. Lưu ý rằng nếu bạn chỉ định không gian tên là "http://tempuri.org/" hãy đảm bảo rằng ký tự gạch chéo phía trước có định nghĩa webservice của bạn. Ví dụ.

[WebService(Namespace = "http://tempuri.org/")] 
public class ReportService : System.Web.Services.WebService 
{ 

} 

Nếu bất kỳ điều kiện nào trong hai điều kiện này không được chỉ định chính xác, phương pháp dịch vụ web của bạn sẽ được gọi là tham số (như datatime, int) đều có giá trị mặc định.

Các vấn đề liên quan