2009-04-01 12 views
1

Silverlight 응용 프로그램에만 IE 관련 문제가 있습니다. Silverlight 2에는 파일 다운로드를위한 메커니즘이 없기 때문에 솔루션을 고안하기 위해 내 장치에 맡겼습니다. 내가 한 방식은 다음과 같습니다.Silverlight 2 - 파일 다운로드 - IE Blocks 파일 다운로드

HtmlPage.Window.Navigate (new Uri (sb.ToString(), UriKind.Relative));

My StringBuilder는 쿼리 문자열을 읽는 서버의 * .ashx 처리기에 대한 쿼리 문자열을 사용하여 상대 URL을 포함하고 데이터베이스에서 데이터를 가져와 Excel 파일을 반환합니다.

이렇게하면 IE에서 차단 된 파일 다운로드 표시 줄 만 표시됩니다. 본인은 IE의 새로운 보안 "기능"이며 웹 페이지와의 사용자 상호 작용에 의해 다운로드가 트리거되지 않았기 때문에 차단되고 있다는 것을 알고 있습니다. 사용자는 다운로드 허용을 선택할 수 있으며 나머지 세션 동안 설정이 기억되는 것으로 보입니다. 그러나 다음에 다시 페이지가 열립니다. 사이트가 신뢰할 수있는 영역에 있고 팝업 차단기가 사이트의 팝업을 허용하도록 구성된 경우에도.

누구든지 IE가 실제로이 파일을 요청했음을 알 수있는 방법을 알고 있습니까?

+0

확인 헤더? – jminkler

답변

0

제 경우에는 처음으로 (IE 7 사용), 아마도 로컬 dev 인스턴스에서 일어 났을까요?

  • 는 사용자을 경고 :

    나는 많이 당신이 할 수있는, 심지어 MSDN 페이지를이를 완화 할 수 일을 "메시지가의 ... 상단에 나타납니다"고이를 알 수없는 생각 메시지가 표시되면 앱을 다시 클릭하면 재설정됩니다. 재설정을 받으면 격리 저장소에 현재 앱 상태를 저장하고 설정을 사용하여 앱을 다시로드합니다.

  • 팝업을 열고 다운로드 할 표준 HTML 버튼과 팝업을 엽니 다.

HTH 브라 울 리오

2

나는 정확히 같은 문제가 있었다. 나를위한 해결책은 HtmlPage.Window.Navigate를 사용하지 않고 대신 HyperlinkButton을 사용하고 NavigateUri 속성을 동적으로 설정하는 것이 었습니다.

위와 같이 앱 상태를 저장하고 복원하지 못했습니다. 글쎄, 그랬지 만, 언제해야 할 지 결정하지 못했습니다. 결국 궁극적으로는 효과가 없습니다.

코드 플렉스에이 설명을 참조하십시오

.... 대신 HtmlPage.Window.Navigate의

http://slideshow2.codeplex.com/Thread/View.aspx?ThreadId=60242

1

해보십시오 HtmlPage.PopupWindow. 인터넷 영역 사이트에 대해 IE의 "파일 다운로드 자동 요청"설정이 기본적으로 사용되지 않도록 설정되었습니다.

1

다운로드 및 덮어 쓰기 URL을 열 때 내 코드 솔루션입니다. IE 8의 파일 다운로드 옵션 문제 자동으로 묻습니다.

또한 HyperlinkButton 사용하지만, 모든 코드에서 호출됩니다

public class BrowserHelper 
{ 
    private sealed class HyperlinkButtonCaller : HyperlinkButton 
    { 
     public static void OpenUrl(Uri url) 
     { 
      var button = new HyperlinkButtonCaller() 
      { 
       NavigateUri = url 
      }; 

      button.OnClick(); 
     } 
    } 

    public static void OpenUrl(Uri url) 
    { 
     if (url == null) 
     { 
      throw new ArgumentNullException("url"); 
     } 

     HyperlinkButtonCaller.OpenUrl(url); 
    } 
} 

BrowserHelper.OpenUrl(new Uri(ClientGlobalInfo.Current.ApplicationUrl, "myhandler.ashx")); 
+0

메서드는 사용자 시작 작업으로 호출해야합니다. 그렇지 않으면 아무 작업도 수행되지 않습니다. – HolaJan