У меня проблема с WebRequest в Silverlight 4. В методе ReadCallback на request.EndGetResponse(result) as HttpWebResponse;
У меня ошибка по поводу безопасности. Я не знаю, что является источником этой проблемы. Я добавил в файл проекта DownloadUpload.Web (asp.net 4) 2: clientaccesspolicy.xml и crossdomain.xml, как в этой статье:
http://msdn.microsoft.com/en-us/library/cc197955(v=vs.95).aspx
и у меня все еще есть эта ошибка.
Это класс по применению Silverlight:
public class CookieSample
{
private const string ServerPath = "http://localhost:8975/";
private const string CookieService = "CookieService.ashx";
public static void SendCookie()
{
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
var request = (HttpWebRequest)
WebRequest.Create(ServerPath + CookieService);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri(ServerPath),
new Cookie("mycookie", "Hello"));
request.BeginGetResponse(ReadCallback, request);
}
private static void ReadCallback(IAsyncResult result)
{
var request = (HttpWebRequest)result.AsyncState;
var response = request.EndGetResponse(result)
as HttpWebResponse;//here I get error
var stringValue = response.Cookies["mycookie"].Value;
}
}
Это класс в проекте DownloadUpload.Web с именем CookieService.ashx.cs
public class CookieService : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var cookie = context.Request.Cookies["mycookie"];
cookie.Value += " success";
context.Response.ContentType = "text/plain";
context.Response.Cookies.Add(cookie);
context.Response.Write("Hello World");
}
public bool IsReusable
{
get
{
return false;
}
}
}
Исключение:
System.Security.SecurityException was unhandled by user code
Message=""
StackTrace:
w System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
w System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
w DownloadUpload.Helpers.CookieSample.ReadCallback(IAsyncResult result)
w System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClassd.<InvokeGetResponseCallback>b__b(Object state2)
w System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
w System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
w System.Threading.ThreadPoolWorkQueue.Dispatch()
w System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
InnerException: System.Security.SecurityException
Message=Security error.
StackTrace:
w System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
w System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
w System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__1(Object sendState)
InnerException:
Что не так с этим кодом?
Я получил его из Silverlight 4 в книге действий.
Вот пути к используемым файлам:
C: \ Users \ Damian \ Downloads \ DownloadUpload \ DownloadUpload.Web \ CookieService.ashx.cs
C: \ Users \ Damian \ Downloads \ DownloadUpload \ DownloadUpload.Web \ clientaccesspolicy.xml
C: \ Users \ Дамиана \ Downloads \ DownloadUpload \ DownloadUpload \ Helpers \ CookieSample.cs