2

HTTP 동사 PUT 및 DELETE가 적절하거나 쓸모 없는지 여부에 대한 토론을 피하고 "강제"사용시 실제로 Silverlight를 작동시키는 문제에 집중하는 것이 좋습니다. 이 동사.Silverlight 4에서 HTTP PUT 및 DELETE 작업을 수행하는 방법

PUT 및 DELETE 동사에 대한 작업이있는 기존 REST 웹 서비스를 호출하는 Silverlight 4 클라이언트 응용 프로그램을 만들려고합니다. 이 서비스는 변경되지 않습니다.

내 App.xaml.cs를에 생성자에 다음 문을 추가했습니다 :

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 

서비스가 포함 된 clientaccesspolicy.xml 파일이 있습니다 내가 사용하고

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

을 GET 및 POST 요청을 처리하는 WebClient 클래스 동사/메소드에 대해 PUT 또는 DELETE를 사용하여 동일한 작업을 시도 할 때 모호한 "보안 오류"가 발생하여 위의 명령문을 추가하게되었습니다.

HttpWebRequest를 사용하여이 문제를 해결하는 방법에 대한 여러 게시물과 블로그 기사를 보았지만 실제로 Silverlight 클라이언트에서 이러한 (비동기식) 호출을하는 방법을 찾지 못했습니다.

위의 코드에 문제가있는 경우 알려주십시오. 그렇지 않으면 나를 보여 주거나 이러한 요청을 구현하는 방법을 보여주는 예를 보여 주면 도움을 주시면 감사하겠습니다.

+1

추가 – AnthonyWJones

답변

1

문제점을 해결했지만 아직 해결되지 않은 이유를 100 % 확신하지 못했습니다.

동료의 제안에 따라 브라우저를 벗어난 상태에서 응용 프로그램을 실행하고 브라우저 외부에서 실행될 때 상승 된 신뢰가 필요하다는 설정을 확인했습니다. 앱이 잘 돌아갔습니다. 브라우저를 사용하지 못하게하고 앱이 계속 정상적으로 실행됩니다.

설정에 따르면, 브라우저 외부에서 실행될 때 높은 신뢰가 필요합니다. 그래서 이것이 문제라면 브라우저에서 실행할 때 내 문제를 수정해야하는지 확신 할 수 없습니다. 하지만 ...

3

clientaccesspolicy.xml 파일에 PUTDELETE HTTP 동사를 허용해야합니다.

나는 일반적으로 허용이 주어진 원래의 구성과 같이하는 모든 HTTP 동사 :

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*" http-methods="*"> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

을 주목 allow-from 요소에 추가 http-methods 속성. 당신이 실제로 우리에게 "코드"를 사용을 HttpWebRequest를 보였다 아마도 경우

관련 문제