여기에 문제가 있습니다.Silverlight의 WebClient가 내 서버에 연결되어 있지 않습니다.
Silverlight 2 응용 프로그램을 호스팅하는 ASP.net 웹 사이트가 있습니다. 사이트에서 Silverlight 앱과주고 받기를 원합니다. HTTP 요청을 통해이 작업을 수행하고 있습니다. 덧붙여 말하면, 누군가가 더 좋은 방법을 안다면 나에게 말해줘.
내 서버에 다음과 같은 http 수신기가 설정되어 있습니다. 내가 요청을 전송하려면 다음 코드를 사용하고
HttpListener listener = new HttpListener ();
listener.Prefixes.Add("http://localhost:4531/MyApp/");
listener.Start();
// Wait for a client request:
HttpListenerContext context = listener.GetContext();
// Respond to the request:
string msg = "You asked for: " + context.Request.RawUrl;
context.Response.ContentLength64 = Encoding.UTF8.GetByteCount (msg);
context.Response.StatusCode = (int) HttpStatusCode.OK;
using (Stream s = context.Response.OutputStream)
using (StreamWriter writer = new StreamWriter (s))
writer.Write (msg);
listener.Stop();
: 그것은 순간에 주로 실험은 이후 나는 어딘가 튜토리얼 사이트에서이 복사
내 문제는 내가 연결할 수 있다는 것입니다private void MyButton_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;
b.Content = "Hello World";
Uri serviceUri = new Uri("http://localhost:4531/MyApp/");
WebClient downloader = new WebClient();
downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(TestDownloadStoriesCompleted);
downloader.DownloadStringAsync(serviceUri);
}
void TestDownloadStoriesCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
TextBox1.Text = e.Result;
}
}
거의 동일한 코드 (코드에서 중단 점을 설정하여 테스트)를 사용하여 콘솔 응용 프로그램에서 웹 서버에 연결했지만 Silverlight에서 버튼을 클릭하면 아무 일도 발생하지 않습니다. (버튼에 델리게이트를 실제로 연결한다는 것을 테스트하기 위해 "Hello World"를 추가했습니다.)
나는 실버 라이트가 webclient를 통해 연결하는 정책을 필요로한다고 읽었지만, 저는 서버와 실버 라이트 애플리케이션 모두에 대해 동일한 서버와 동일한 도메인을 사용하고 있습니다!
모든 답장을 보내 주셔서 감사합니다.
편집 : 나는이 예외 잡 오전 :
System.Security.SecurityException를 ---> System.Security.SecurityException : 보안 오류입니다.
도 내가 reading 인 것처럼 사이트의 출처가 될 것임에 따라 xap의 배포 URI와 요청 URI도 동일한 포트 여야합니다.
그러나 특정 포트에서 서버를 호스팅 할 속성을 설정하고 해당 포트를 수신 대기하도록 수신기를 설정하면 해당 프로세스가 파일을 액세스 할 수 없다는 메시지와 함께 실패합니다 다른 프로세스에서 사용합니다. http 수신기가 호스트하는 데 사용되는 동일한 포트를 수신 할 수 없기 때문에 가정합니다. 하지만 Silverlight에서 호스트 웹 클라이언트 요청을 수행하도록하려면 어떻게해야합니까?
감사합니다. 내 게시물을 수정하겠습니다. –