2011-06-23 9 views
7

Tôi đang xây dựng ứng dụng Silverlight sẽ dễ dàng triển khai cho các trang web khác nhau và từ bên trong ứng dụng, tôi cần truy cập tên miền/máy chủ lưu trữ mà Silverlight được lưu trữ tại. Vì vậy, tôi biết cho các ứng dụng trong cửa sổ trình duyệt, mã này sẽ hoạt động hoàn hảo:Truy cập thông tin máy chủ hoặc URL trong Silverlight ngoài trình duyệt

HtmlPage.Document.DocumentUri.Host; 

Vấn đề là, tôi cần ứng dụng này được cài đặt và chạy ở chế độ ngoài trình duyệt. Tuy nhiên, khi tôi gọi cùng một mã trong chế độ OOB, tôi nhận được một ngoại lệ, điều này hoàn toàn bình thường khi SL không chạy trong trình duyệt. Nhưng một cách hợp lý, ứng dụng SL đã được cài đặt từ đâu đó và tôi cần truy cập URL "gốc" đó (hoặc ít nhất, máy chủ gốc là đủ cho tôi trong dự án này). Nói một cách đơn giản, nếu ứng dụng được cài đặt từ http://example.com/example.xap, làm cách nào tôi có thể truy cập vào chuỗi "http://example.com/example.xap" một cách có lập trình trong khi hết trình duyệt? Tôi sẽ không biết điều này trước vì ứng dụng sẽ được mô-đun và được triển khai cho bất kỳ miền nào. Đang tạo tệp cài đặt trong bộ nhớ bị cô lập và đặt chuỗi miền nếu không đặt tùy chọn duy nhất, hoặc có cách nào nhỏ hơn không?

Cảm ơn, có thể.

Trả lời

11

Bạn có thể lấy địa chỉ (ngay cả trong OOB) bằng cách sử dụng Application.Current.Host.Source

+0

Cảm ơn, nó đã giải quyết được sự cố của tôi. –

+0

Tôi đang lưu trữ một vài trang web trên cùng một ứng dụng web như XAP của tôi (thực sự được sử dụng trong điều khiển Silverlight WebBrowser) và điều này đã giúp tôi tìm kiếm URL theo chương trình. Hoàn hảo. –

0

Bạn có thể lấy địa chỉ của Xap từ BaseAddress của một phiên bản mới của WebClient.

WebClient client = new WebClient(); 
string xapAddress = client.BaseAddress; 

BaseAddress được khởi tạo bằng địa chỉ gốc của ứng dụng và sẽ hoạt động trong OOB.