2011-10-21 8 views
7

biegnę w dziwny problemu z crossdomain rozmowy Zestawienie Silverlight 4.clientaccesspolicy.xml nie zwróciła się po raz pierwszy w niektórych przeglądarkach

Natychmiast po uruchomieniu, aplikacja wywołuje usługa na tym samym komputerze, z którego został pobrany, ale na innym porcie (np. aplikacja znajduje się pod adresem http://www.mydomain.com:80, a usługa sieciowa to http://www.mydomain.com:81). Brak połączenia SSL. Host dostarcza prawidłowy plik clientaccesspolicy.xml i wszystko działa poprawnie przez większość czasu (jak 99,9%).

Jednak w niektórych przypadkach przeglądarka nie żąda pliku clientaccesspolicy.xml, w wyniku czego połączenie z serwisem internetowym jest blokowane i kończy się niepowodzeniem z błędem w wielu domenach.

W typowym przypadku jest to sekwencja żądań widać z Fiddler lub Chrome narzędzi programistycznych:

  • index.html (strona hostingu aplikacji Silverlight)
  • silverlight.js
  • aplikacyjne .xap
  • clientaccesspolicy.xml (zamówione i pobrane poprawnie)
  • webservices połączenia

W niektórych przypadkach jednak widzisz tylko

  • index.html (strony hostingu aplikacji Silverlight)
  • silverlight.js
  • application.xap
  • -> krzyż błąd domeny (bez clientaccesspolicy żądanie, brak wezwania serwisu WWW).

Dzieje się tak tylko na mniejszość maszyn (wszyscy z systemem Windows 7) Jeżeli wszystkie te warunki są prawdziwe:

  • aplikacja działająca w ciągu Chrome, Firefox lub out-of-the przeglądarce (IE zawsze działa)
  • to po raz pierwszy załadować stronę (czyli jeśli trafisz przycisk przeładować przeglądarki problem zniknie. przeglądarka Zamknij/restart i po raz pierwszy nadal masz problem)
  • no Fiddler działa (jeśli uruchomisz ruch przez Skrzypek problem zniknie). Narzędzia programistów Chrome nie działają jednak.
  • Urządzenie znajduje się wewnątrz domeny tej samej domeny co serwer aplikacji. Jeśli uzyskasz dostęp do strony z sieci zewnętrznej (na tym samym komputerze), problem nie występuje.

Na tych maszynach problem jest w 100% powtarzalny.

Co może być przyczyną? Jakie czynności mogę wykonać, aby śledzić problem?

Odpowiedz

11

Ten problem jest dość rzadki, ale z pomocą Microsoftu znalazłem rozwiązanie. Piszę to na przyszłość, więc mam nadzieję, że this nie powtórzy się.

Jako zabezpieczenie, Silverlight blokuje każde wywołanie między domenami między strefą internetową a strefą Local Intranet. W takim przypadku nie wymaga nawet klienta clientaccesspolicy.xml. Jeśli więc aplikacja jest hostowana na stronie www.myhost.com (strefa internetowa), Silverlight uniemożliwia mu wywoływanie usługi internetowej na stronie www.another.com (strefa Lokalny intranet).

This blog post wyjaśnia to szczegółowo.

Więc jeśli masz jedną lub kilka z następujących symptomów (mimo że odrzuca oczywistych błędów crossdomain niczym zniekształconych lub zagubienia clientaccesspolicy.xml):

  • błędach crossdomain od niektórych pozornie przypadkowych maszyn (kilku różnych lokalizacjach/domains), ale działa z innych urządzeń.
  • clientaccesspolicy.xml w ogóle nie jest wymagany
  • działa z niektórymi przeglądarkami, nie współpracuje z innymi. Niby przypadkowo, czasem nie działa z żadną przeglądarką.
  • czasami nie ma problemu, gdy Skrzypek jest otwarty, ale błąd bez Skrzypek działa
  • wszystko działa prawidłowo na localhost

Warto może spróbować następujących, aby umieścić szereg aplikacji i usługę internetową w tej samej strefie bezpieczeństwa:

  • przejdź do ustawień zabezpieczeń IE (ustawienia te są również wykorzystywane przez dowolną aplikację, że dostęp do sieci, tj inne przeglądarki, jak również)
  • dodać dodatek ress, który obsługuje aplikację i adres na której znajduje się usługa do Lokalny intranet strony OR
  • odznacz „Automatycznie wykryj sieć intranet” flagi (tak, że zarówno kończy się w strefie Internet)
+1

Mogę cię pocałować, proszę pana. –

+1

Ja też chcę cię pocałować. To rozwiązało problem, który uniemożliwiał nam przejście do przodu z usługą IIS Smooth Streaming. – theChrisKent

Powiązane problemy