2009-04-30 4 views
0

Ich habe ein Projekt im Flex Builder mit dem Anwendungsservertyp erstellt, der auf none festgelegt ist.flex und .net 2.0 Web-Service, wie Zugriff von anderen Domänen zu ermöglichen?

Wenn ich debuggen, kann ich den Web-Service von meinem lokalen Rechner, das ist Zugriff auf eine Website http://mysite.com/ws/ws.aspx?wsdl

Wenn ich die Flex App laden mysite.com/myapp.html es funktioniert gut.

Aber wenn ich es auf myapp.mysite.com/myapp.html hochladen, wird es nicht auf den Web-Service zugreifen.

Wer weiß, was ich vermisse?

Danke

P.S. Die WS wurde mit VB.net erstellt, und wenn ich ein Flex-Projekt mit Anwendungsservertyp auf .net erstellen, darauf zugreifen pflegte die WS von meinem lokalen Rechner

dies meine crossdomain.xml-Datei ist

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

** Meine Vermutung ist, dass es sich nicht um ein Flex-Problem handelt, sondern um eine .net-Sicherheitsfunktion ... die ich nicht zu konfigurieren weiß.

.NET nicht apps erlauben, es zu benutzen außerhalb der eigenen Domäne. **

+0

Was bedeutet "es wird nicht auf den Web-Service zugreifen"? Welche Art von Fehler bekommst du? –

+0

bedeutet, dass flex ein falut-Ereignis zurückgibt, als ob der Web-Service nicht existierte, vielleicht erlaubt de Web-Service nur Anwendungen auf seiner eigenen Domain, ich denke nicht, dass es ein Flex-Problem ist. – sergiogx

Antwort

1

standardmäßig Flex erlaubt keine Web-Services auf entfernten Hosts zugreifen. Dies ist eine Sicherheitsfunktion von Flex. Da Ihre Flex-App unter myapp.mysite.com bereitgestellt wird, befindet sie sich unter einem anderen Host als der Dienst unter mysite.com.

Sie können eine crossdomain.xml zu mysite.com hinzufügen, die Flex überprüft, um zu sehen, ob der Dienst Zugriff von verschiedenen Domänen ermöglicht. Die Datei crossdomain.xml muss sich im Webstamm der Domäne befinden (mysite.com/crossdomain.xml). Ich habe die folgenden Inhalte verwendet, um die Verwendung von Debugging zu ermöglichen. Beachten Sie, dass es die gesamte Verwendung erlaubt. Wenn Sie die Verwendung in der Produktion einschränken möchten, müssen Sie sie später ändern.

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

Weitere Informationen in Flex documentation, vor allem die knowledge base article.

+0

Ich habe eine crossdomain.xml, ich habe gerade diese Zeile aus Ihrem Code hinzugefügt alles andere ist gleich. noch kein glück :( – sergiogx

1

Überprüfen Sie die Anfragen, die mit Tamper Data (Firefox-Erweiterung) gestellt werden. Überprüfen Sie, ob die App die Datei crossdomain.xml findet. Wenn der Pfad deaktiviert ist, ist das dein Problem.

+0

yup die crossdomain ist da – sergiogx

+0

Also, nachdem die crossdomain geholt wird, welche Art von Fehler gemeldet wird, wenn Sie versuchen, auf den WebService zuzugreifen? Oh, und ein Kommentar zu Ihrem letzten Kommentar in der Frage: Es gibt keine Standardeinstellung in .Net, das den WebService-Zugriff auf Cross-Domains verhindert Diese Einschränkung wird durch Flash auferlegt, da sie auf dem Client ausgeführt wird.Wenn dies nicht der Fall wäre, könnte Flash verwendet werden, um Daten in internen LANs zu schnüffeln. –