Silverlight, потребляющий ошибки в канале Одата?
Я просто подключаю приложение Silverlight к нашему провайдеру Одата. У меня уже есть приложение IPad, которое использует провайдера OData, поэтому я знаю, что с провидором проблем нет.
Когда я пытаюсь получить данные из провайдера OData, в моем приложении silverlight происходит много ошибок. Итак, вот мой код:
Dim context As MyEntities
context = New MyEntities(New Uri("http://localhost:8080/MyOdataProvider/OData.svc"))
' Initialize the binding and view source collections.
trackedOrders = New DataServiceCollection(Of MyUser)()
' Define a query that returns orders for a give customer.
Dim query = From orderByCustomer In context.MyUsers _
Select orderByCustomer
' Asynchronously load the result of the query.
trackedOrders.LoadAsync(query)
' Define a handler for the LoadCompleted event of the collection.
AddHandler trackedOrders.LoadCompleted, _
AddressOf trackedOrders_LoadCompleted
Private Sub trackedOrders_LoadCompleted(ByVal sender As Object, _
ByVal e As LoadCompletedEventArgs)
If e.Error Is Nothing Then
' Load all pages of Orders before binding.
If trackedOrders.Continuation IsNot Nothing Then
trackedOrders.LoadNextPartialSetAsync()
Else
' Bind the root StackPanel element to the collection
' related object binding paths are defined in the XAML.
'ordersViewSource.Source = trackedOrders
' Re-enable the button since the loading is complete.
'getCustomerOrders.IsEnabled = True
End If
Else
MessageBox.Show(String.Format("An error has occured: {0}", e.Error.Message))
' getCustomerOrders.IsEnabled = True
End If
End Sub
Каждый раз, когда он попадает в trackedOrders_LoadCompleted e.error, происходит следующее:
{System.InvalidOperationException: при обработке этого запроса произошла ошибка. ---> System.Security.SecurityException: [Arg_SecurityException] Аргументы:
Строки ресурсов отладки недоступны. Часто ключ и аргументы предоставляют достаточную информацию для диагностики проблемы. См. Http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.60401.00&File=mscorlib.dll&Key=Arg_SecurityException по адресу System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncRatault.Sync..ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) в System.Data.Services.Client.QueryResult.AsyncEndGetResponse(IAsyncResult asyncResult) --- Конец внутренней трассировки стека исключений [Устройства. Класс. ](Источник объекта, метод String, IAsyncResult asyncResult) в System.Data.Services.Client.QueryResult.EndExecute[TElement](Источник объекта, IAsyncResult asyncResult)
в System.Data.Services.Client.DataServiceRequest.EndExecute[TE lement](Источник объекта, контекст DataServiceContext, IAsyncResult asyncResult) в System.Data.Services.Client.DataServiceQuery1.EndExecute(IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceCollection
1. <> c_ DisplayClass2.b _1 (IAsyncResult asyncResult) в System.Data.Services.Client.DataServiceCollection1.<>c__DisplayClassd.<>c__DisplayClassf.<BeginLoadAsyncOperation>b__b()} System.InvalidOperationException: {System.InvalidOperationException: An error occurred while processing this request. ---> System.Security.SecurityException: [Arg_SecurityException] Arguments:
1.EndExecute (IAsyncResult asyncResult) в System.Data.Services.Client.DataServiceCollection
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.60401.00&File=mscorlib.dll&Key=Arg_SecurityException at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Data.Services.Http.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Data.Services.Client.QueryResult.AsyncEndGetResponse(IAsyncResult asyncResult) --- End of inner exception stack trace --- at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult) at System.Data.Services.Client.QueryResult.EndExecute[TElement](Object source, IAsyncResult asyncResult)
at System.Data.Services.C lient.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceQuery1.<>c__DisplayClass2.<LoadAsync>b__1(IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceCollection
1. <> C_ DisplayClassd. <> C _DisplayClassf.b__b()}
Я скопировал этот код из Microsoft о том, как это сделать, и его ублюдок довольно плохо, потому что я пытался что-то изменить, чтобы увидеть, если это что-то меняет.
У меня также есть настройка clientAccessPolicy.xml в провайдере odata wwwroot, так что я надеюсь, что это не проблема. Это мой файл clientAccessPolicy:
<?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>
Любые идеи о том, чем может быть вызвана ошибка? Я рву свои волосы здесь.