我正在開發一個Silverlight 3應用程序,我想通過提供的.dll或SOAP連接到webservice。但.dll不適合Silverlight,所以我不能這樣做。由於跨域問題,我無法訪問SOAP服務(我沒有託管它,因此clientpolicy xml不會這樣做)。在Silverlight中保留狀態3
所以我的解決方案是將.dll包含在我自己的域中啓用WCF的web服務中,並讓Silverlight應用程序調用web服務。這工作。
現在我的問題:從我的web服務引用的.dll提供的客戶端有一個.Connect()方法,所以我必須保存該對象的狀態。但我能做到嗎?嚴格來說不是因爲Silverlight不支持wsHttpBinding。我知道我可以訪問ASP會話變量,但我也可以做到瀏覽器外?我只能找出解決我的問題的一種解決方案,即在ASP Session中保存用戶名/密碼,並在每種方法中調用.Connect()方法。但這真是一個糟糕的解決方案。
更好的主意?
我不認爲我已經說清楚了,我對此表示歉意。我的英語正是這個主要原因。
我:
我它運行在網站上和Silverlight應用程序外的瀏覽器
這是在同一個域中託管我的WCF服務。
跨域web服務(我不能訪問存儲跨域策略文件)
我的WCF Web服務提供了我的應用程序和跨域web服務,因爲你不能添加跨之間的層沒有策略文件的域web服務。
我的web服務看起來像這樣(以抽象的方式):
class MyWebService
{
CrossDomainWebServiceClient client = new CrossDomainWebServiceClient();
public void Connect(string username, string password)
{
client.Connect(username, password);
}
public object Foo()
{
//GetEmployees() do only work if I'm connected
return client.GetEmployees();
}
}
,把foo()方法不起作用,因爲它是每個呼叫會話,而不是每個實例的會話。我希望這個工作。所以客戶端對象需要保留下次調用。 Session.required在Silverlight中不起作用,因爲wsHttpBinding顯然不受支持。
hm,很好的解決方案。我的Silverlight應用程序和跨域web服務之間有一個WCF web服務。但是,我如何維護一個對象從調用我的web服務到另一個? – 2009-10-28 18:23:53
該對象應該使用WCF服務中的服務引用來定義。然後通過WCF服務引用將該對象共享給Silverlight。然後,您會將該對象從Silverlight傳遞到WCF到Web服務。 – Bryant 2009-10-28 21:58:47
我對最初發布的內容做了一些補充,希望他們能夠清理我想要的內容:) MVH – 2009-10-29 15:38:25