2009-07-22 7 views
5

Trong ứng dụng ASP.NET của tôi, tôi có một dòng trong sự kiện khởi động ứng dụng toàn cầu cấu hình kênh truy cập từ xa của khách hàng bằng cách gọi RemotingConfiguration.Configure().Làm thế nào để xác định xem kênh từ xa đã được đăng ký

này hoạt động tốt lần đầu tiên, nhưng khi ứng dụng web của tôi được tái chế, sự kiện ứng dụng bắt đầu được bắn một lần nữa gây ra ngoại lệ Remoting sau:

Remoting cấu hình thất bại ngoại trừ 'System.Runtime.Remoting.RemotingException : Kênh 'tcp' đã được đăng ký.

Tôi muốn phát hiện xem kênh đã được định cấu hình sao cho tôi có thể tránh bị ngoại lệ này.

Trả lời

0

Nhưng bạn sẽ làm gì nếu thấy nó đã được đăng ký?

Trong mọi trường hợp, tôi chỉ muốn đảm bảo rằng bạn biết rằng .NET Remoting đã không được chấp nhận vì lợi ích của WCF.

+0

Nếu tôi biết rằng nó đã được đăng ký, tôi sẽ không gọi RemotingConfiguration.Configure() để tránh sự ngoại lệ. –

+0

Nhưng nó sẽ không được đăng ký để _you_, phải không? –

+0

Nó sẽ được đăng ký cho phần mềm của chúng tôi. Tôi đoán là lần đầu tiên chúng tôi đăng ký kênh từ xa, nó sẽ trở thành đăng ký cho quá trình w3wp.exe. Vì quá trình này không được khởi động lại khi ứng dụng web tái chế, cuộc gọi cấu hình thứ hai từ sự kiện application_start gây ra một ngoại lệ. –

4

Tôi đã gặp vấn đề này quá.

Sự cố là bạn có thể dừng ứng dụng gọi là RemotingConfiguration.Configure() nhưng điều đó không làm cho kênh khả dụng. Một cái gì đó của nó để làm với các cổng hoặc nó có thể chỉ là tên của kênh, tôi không chắc chắn.

Giải pháp mà tôi tìm thấy có vẻ như hoạt động là nhận các kênh đã đăng ký và hủy đăng ký kênh bạn muốn xóa.

Dưới đây là một số mã

RemotingConfiguration.Configure(appConfig, false); 

// do this to unregister the channel 
IChannel[] regChannels = ChannelServices.RegisteredChannels; 
IChannel channel = (IChannel)ChannelServices.GetChannel(regChannels[0].ChannelName); 

ChannelServices.UnregisterChannel(channel); 

RemotingConfiguration.Configure(appConfig, false); // this is just a test to see if we get an error 

Tôi hy vọng làm việc này cho bạn, nó có cho tôi