2009-09-08 58 views

回答

2

您需要編寫自定義代碼才能執行此操作。有兩部分自定義代碼:1)ASP.Net Silverlight主機站點需要通過初始參數傳遞Silverlight應用程序的服務地址; 2)應用程序啓動事件需要處理初始參數以將服務指向正確的地址。

ASP.Net主機站點上的第1部分代碼。有3個步驟在這裏:

A)包含的服務名稱

<appSettings> 
    <clear/> 
    <add key="MyServiceName" value="MyService.svc"/>   
</appSettings> 

B)在頁面加載事件獲取網頁的基地址添加一個web.config值,附加服務地址它,並將其保存到一個頁面級可變

// Page level variable for initial parameters 
    public string InitParams { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     var serviceAddress = 
      ConfigurationManager.AppSettings["MyServiceName"]; 

     var baseAddress = Request.Url.GetLeftPart(UriPartial.Authority); 

     var fullAddress = string.Format("{0}/{1}", baseAddress, serviceAddress); 

     // Pass parameters to SilverLight Application 
     InitParams = string.Format(
      "{0}={1}", 
      "ServiceAddress", 
      fullAddress); 
    } 

C)在承載Silverlight控件的頁面設置初始頁面級變量作爲B.

定義這裏
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
    <param name="source" value="ClientBin/MySilverlightProject.xap"/> 
    <param name="onError" value="onSilverlightError" /> 
    <param name="background" value="white" /> 
    <param name="minRuntimeVersion" value="3.0.40624.0" /> 
    <param name="autoUpgrade" value="true" /> 
    <param name="InitParams" value="<%=InitParams%>" /> 
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> 
     <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/> 
    </a> 
    </object> 

該鍵爲

<param name="InitParams" value="<%=InitParams%>" /> 

第2部分掛鉤的應用程序啓動事件和初始化爲您服務,在App.xaml.cs文件中的地址。

private void Application_Startup(object sender, StartupEventArgs e) 
     { 
      string serviceAddress = e.InitParams["ServiceAddress"]; 
      // INSERT CODE TO INITIALIZE YOUR SERVICE HERE 
     } 
+0

有用的答案,非常有幫助! – 2010-10-12 19:19:12

0

您可以編寫自己的代碼來拉出當前服務的服務器路徑,並預先考慮到服務你想用。