2010-10-18 32 views
1

我的團隊正在Flash中構建一個遊戲以嵌入到asp.net應用程序中。保護asp.net web服務以便從flash中使用

當遊戲結束時,玩家有機會輸入他的名字來保存他的分數。 這是使用從flash調用的Web服務完成的。網絡服務收到名稱和分數。

由於Web服務是公開的我怎樣才能使它只能從我的閃存調用給出以下條件:

  • .swf文件是由同一個asp.net應用程序託管
  • 有兩個域可以訪問相同的應用程序(以前我已經運行了跨域問題)。
  • 使用SSL不是一個選項。
  • web服務必須由.swf文件使用。

任何幫助或代碼,將不勝感激。

回答

2

那麼如果你想使用ASP.NET web應用而不是web服務,我有一個解決方案,在我的項目上工作。

您可以使用LoadVars' and 'sendAndLoad將變量從閃存發送給您的ASP.NET頁面。那麼可以使用Request.Form來獲取.NET網頁中的值。現在,當你有從Flash到你的.NET網頁的所有變量,做你所需要的任何處理(Ado.NET或發送郵件給用戶)

這是一個sample,讓你開始雖然它是在ASP ,可以在ASP.NET中輕鬆使用。

但是,如果您正在嘗試使用Flash中的web服務器連接器m不確定,並且不明白爲什麼要使用webservice,而我們可以使用webapp?

Crossdomain.xml(策略文件)在這裏非常重要。

編輯
要將數據從flash發送到webservice,我們可以使用下面的一些方法。

var wsConn:WebServiceConnector = new WebServiceConnector(); 
wsConn.addEventListener("status",fault); 
wsConn.addEventListener("result",res); 
wsConn.multipleSimultaneousAllowed = true; 
//The following WSDL has been deployed locally. Most cases you will have another URL 
wsConn.WSDLURL = "http://localhost/flightstatus/FlightHistoryService.wsdl"; 
//Method you need to call 
wsConn.operation = "FlightHistoryGetHistoryOperation"; 
//Will Send the params as an array to the Webservice 
wsConn.params = [flightHistoryRequest]; 
//wsConn.suppressInvalidCalls = true; 
    wsConn.trigger(); 

有關完整參考請參閱我的文章Blog

+0

整個遊戲都在閃存中,並保存在DB中的分數我的as.net應用程序中的Web服務必須被調用。或者有什麼其他方式安全地發送數據到我的asp.net應用程序? – 2010-10-19 16:25:28

+0

@CarlosMuñoz,你不需要web服務。只需在.CS文件中(如果使用C#編寫)加載Flash變量,然後將它們保存到數據庫 – Simsons 2010-10-19 16:28:40

+0

通過POST將參數發送到網頁不是安全的。儘管如此,web服務也遭受同樣的弱點。 – 2010-10-19 21:36:23