3

HTTPS 웹 서비스와 대화하는 Silverlight 앱이 있습니다.Silverlight에서 HTTPS 웹 서비스와 통신 할 수 없습니까?

그러나 대부분의 컴퓨터에서는 제대로 작동하지만 일부 컴퓨터에서는 일관되게 작동하지 않습니다.

실패한 시스템에서 WebClient 요청을 HTTPS 웹 서비스로 보낼 때 SecurityException이 발생합니다. 실버 라이트 응용 프로그램이 HTTPS 웹 서비스를 호출 할 수 없게됩니다 가능한 이유는 무엇

WebClient client = ...; 
client.DownloadStringCompleted += OnCompleted; 
client.DownloadStringAsyc("https://somewebservice/foo"); 

... 

void OnCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    Console.WriteLine(e.Error); // Prints SecurityException. Message = "Security error" 
} 

다음에, SecurityException 자체는 나에게 왜 정말 실패하는 것에 같은 단서를 제공하지 않는 이유는 무엇입니까? 어떻게 디버깅을 할 수 있습니까?

편집 아직 답변이 없습니다.이 문제를 해결하는 데 도움이되는 추가 정보가 있습니까?

답변

3

우리는 그것을 알아 냈습니다. 문제는 교차 영역 호출로 발생했습니다.

Silverlight 앱은 IE의 일반 인터넷 영역 (낮은 신뢰도)에있는 foo.bar.com에서 호스팅되었습니다.

웹 서비스는 IE의 인트라넷 영역 (높은 신뢰도)에있는 foo.ourcompany.com에서 호스팅되었습니다.

Silverlight 응용 프로그램은 낮은 보안 영역에서 높은 보안 영역으로 웹 요청 호출을 할 수 없습니다. 자세한 내용은 Silverlight URL Access Restrictions에 대한 MSDN의 기사를 참조하십시오. 우리의 경우 인터넷 -> 인트라넷에서 낮은 신뢰에서 높은 신뢰로 이동했기 때문에 SL 호출이 SecurityException으로 실패했습니다.

의견 : Microsoft는 웹 요청 호출 중에 SecurityException이 발생한 이유에 대한 정보를 제공해야합니다. 이것은 우리에게 많은 시간과 돈을 절약 할 수있었습니다.

+0

결국 문제를 해결할 수 있었습니까? –

+0

예, 대답을 읽었습니까? 문제는 앱이 낮은 신뢰 (인터넷)로 간주하고 IE가 높은 신뢰 (기업 인트라넷)로 간주하는 서비스에서 호스팅하는 것으로부터 실행되고 있다는 것입니다. 해결 방법은 인터넷과 인트라넷 모두에서 동일한 영역에 앱과 서비스를 배치하는 것입니다. –

관련 문제