答案 0 :(得分:2)
您需要编写自定义代码才能执行此操作。自定义代码有两部分:1)ASP.Net Silverlight主机站点需要通过初始参数将Silverlight应用程序传递给服务地址; 2)Application Start-Up事件需要处理初始参数以将服务指向正确的地址。
第1部分ASP.Net主机站点上的代码。这里有3个步骤:
A)添加包含服务名称
的web.config值<appSettings>
<clear/>
<add key="MyServiceName" value="MyService.svc"/>
</appSettings>
B)在页面加载事件中获取网页基地址,将服务地址附加到它,并将其保存到页面级变量
// 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启动事件并将服务初始化为App.xaml.cs文件中的地址。
private void Application_Startup(object sender, StartupEventArgs e)
{
string serviceAddress = e.InitParams["ServiceAddress"];
// INSERT CODE TO INITIALIZE YOUR SERVICE HERE
}
答案 1 :(得分:0)
您可以编写自己的代码来提取当前服务的服务器路径,并将其添加到您要使用的服务之前。