2012-06-21 30 views
6

vừa triển khai dịch vụ WCF của tôi trên máy chủ tại công ty của tôi bằng IIS 7.5 và mọi thứ có vẻ hoạt động tốt. Nhưng khi tôi thiết lập ứng dụng khách của tôi và thêm một tham chiếu máy chủ đến máy chủ và sau đó sử dụng mã này.Ứng dụng khách hàng dịch vụ WCF nhận "Đối tượng không được đặt thành một đối tượng"

ServerReference.ServiceClient client = new ServerReference.ServiceClient(); 

var s = client.GetBrand("Audi", false); 

Tôi nhận được ngoại lệ cho biết "tham chiếu đối tượng không được đặt thành thể hiện của đối tượng". đối tượng không được b rỗng (chúng tôi đã thử dịch vụ trên máy chủ cục bộ nơi chúng tôi đã có tất cả trong cùng một dự án nơi nó hoạt động).

Bạn nhìn vào đống xếp chồng và trông như thế này.

21.6.2012 16:16:29 

Tham chiếu đối tượng không được đặt thành thể hiện của đối tượng.

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

Mọi đề xuất ?? P.S CPU nơi Dịch vụ WCF được lưu trữ không có studio trực quan để tôi không thể gỡ lỗi qua nó

+2

[WcfTestClient] (http://msdn.microsoft.com/en-us/library/bb552364.aspx) có hoạt động trên dịch vụ được lưu trữ không? Thu hẹp xuống để xem liệu đó có phải là việc triển khai của bạn hay dịch vụ không khởi tạo được.Hợp đồng cũng có thể đã thay đổi (tùy thuộc vào lần cuối cùng bạn nhận siêu dữ liệu) có thể khiến dịch vụ không khởi tạo được. –

Trả lời

2

Như tôi đã đề xuất trong nhận xét, hãy đảm bảo bạn có thể lấy dữ liệu bằng cách sử dụng WcfTestClient. Cả hai đều xác nhận dịch vụ đang hoạt động, và gần như đơn vị kiểm thử phương thức gọi đảm bảo nó hoạt động từ góc nhìn của máy khách.

Thứ hai, (trừ khi bạn tưới nước xuống để đăng trên SO) sử dụng correct WCF call method để tránh các loại sự cố này. Một khi bạn giới thiệu một sự phụ thuộc nó luôn luôn là một ý tưởng tốt để dự đoán cho thất bại (mặc dù dịch vụ của bạn, kết nối internet của khách hàng, hoặc nếu không).

Không biết bất kỳ điều gì khác về dự án của bạn, thật khó để mô tả cách khắc phục. Các yếu tố như WSDL cũ, cấu hình sai * .config, điểm cuối không tiếp xúc trên máy chủ và các vấn đề khác có thể là gốc của sự cố nhưng với những gì bạn đã thể hiện, tôi không biết nó có thể là gì.

Nếu bạn có thể cung cấp thêm thông tin, tôi sẽ vui mừng cập nhật câu trả lời của tôi với bất kỳ lời khuyên nào khác mà tôi có thể có. Bây giờ, hãy xem enabling WCF tracing trên máy chủ để bạn có thể xem lại (các) nhật ký và xem có bất kỳ điều gì afoul trên đầu máy chủ hay không (ngoài việc thực hiện cuộc gọi và kiểm tra của khách hàng).

+0

truy tìm WCF hiện đang hoạt động ngay bây giờ (không hoàn toàn hiểu tại sao) ... theo tôi nghiên cứu ngày nay là có cái gì đó với ràng buộc. Một điều mà tôi chú ý và thú vị là khi sử dụng một máy khách thử nghiệm và gọi Dịch vụ trên một máy chủ cục bộ và tôi gọi nó bằng một tham số null nó trả về lỗi giống như dịch vụ lưu trữ IIS (với mọi tham số). Đó có phải là một cái gì đó để xem xét, p.s là có bất cứ điều gì khác u sẽ muốn tôi đăng ở đây để hiểu tốt hơn – user1279173

1

Bạn không phải gỡ lỗi thông qua nó. Chỉ cần thêm WCF truy tìm thiết lập trong web.config và bạn có thể nhận được thông tin về lỗi ban đầu. Xem http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

copy-id mã và đặt trong webconfig của tôi, và không có gì xảy ra. Không có tệp nào được tạo hoặc điều tương tự như vậy – user1279173

+0

Bạn có đang chạy dịch vụ WCF trong một hồ bơi ứng dụng có bản sắc khác không? Nếu vậy, bạn cần đảm bảo rằng nó có toàn quyền kiểm soát đối với thư mục được đề cập. Tôi nghĩ với việc truy tìm mức thông tin, bạn có thể kiểm tra chỉ bằng cách duyệt dịch vụ, bạn có thể cần mức độ dài. – Rich

0

Tôi có cùng một vấn đề trong dự án của mình, trong trường hợp của tôi, tôi thấy rằng ngoại lệ xảy ra trong trình tạo dịch vụ nhưng nó chỉ được kích hoạt khi tôi gọi bất kỳ phương thức nào.

0

Định cấu hình nguồn theo dõi để phát ra dấu vết và đặt mức độ theo dõi, đặt theo dõi hoạt động và tuyên truyền để hỗ trợ tương quan theo dõi đầu cuối và đặt trình theo dõi để truy cập dấu vết.

Windows Communication Foundation (WCF) xuất dữ liệu sau đây để theo dõi chẩn đoán: Dấu vết cho các mốc quá trình trên tất cả các thành phần của ứng dụng, chẳng hạn như cuộc gọi hoạt động, ngoại lệ mã, cảnh báo và các sự kiện xử lý quan trọng khác. Sự kiện lỗi Windows khi tính năng dò vết trục trặc. Xem Event Logging in WCF.

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