.net和silverlight中的相对Web服务引用

问题描述:

是否有可能使这些相对?.net和silverlight中的相对Web服务引用

例如: webservice.asmx

而不是

http://servername/webservice.asmx

您需要编写自定义代码才能执行此操作。有两部分自定义代码: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

您可以编写自己的代码来拉出当前服务的服务器路径,并预先考虑到服务你想用。