Я просто подключаю приложение silverlight к нашему провайдеру Одата. У меня уже есть приложение IPad, использующее провайдера OData, поэтому я знаю, что с провидором проблем нет.
Множество ошибок происходит с моим приложением silverlight, когда я пытаюсь получить данные из провайдера OData. Итак, вот мой код:
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: An
произошла ошибка при обработке этого
запрос. --->
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
asyncResult) в
System.Data.Services.Http.ClientHttpWebRequest.EndGetResponse (IAsyncResult
asyncResult) в
System.Data.Services.Client.QueryResult.AsyncEndGetResponse (IAsyncResult
asyncResult) --- конец внутреннего
трассировка стека исключений --- в
System.Data.Services.Client.BaseAsyncResult.EndExecute [Т] (Объект
источник, метод 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.DataServiceQuery 1.EndExecute(IAsyncResult
asyncResult) at
System.Data.Services.Client.DataServiceCollection
1. <> C_ DisplayClass2.b _1 (IAsyncResult
asyncResult) в
System.Data.Services.Client.DataServiceCollection 1.<>c__DisplayClassd.<>c__DisplayClassf.<BeginLoadAsyncOperation>b__b()}
System.InvalidOperationException: {System.InvalidOperationException: An
error occurred while processing this
request. --->
System.Security.SecurityException:
[Arg_SecurityException] Arguments:<br>
Debugging resource strings are
unavailable. Often the key and
arguments provide sufficient
information to diagnose the problem.
See
<a href="http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.60401.00&File=mscorlib.dll&Key=Arg" rel="nofollow">http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.60401.00&File=mscorlib.dll&Key=Arg</a>_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)<br>
at System.Data.Services.C
lient.DataServiceRequest.EndExecute[TElement](Object
source, DataServiceContext context,
IAsyncResult asyncResult) at
System.Data.Services.Client.DataServiceQuery
1.EndExecute (IAsyncResult
asyncResult) в
System.Data.Services.Client.DataServiceCollection 1.<>c__DisplayClass2.<LoadAsync>b__1(IAsyncResult
asyncResult) at
System.Data.Services.Client.DataServiceCollection
1. <> C_ DisplayClassd. <> С _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>
Есть идеи о том, чем может быть вызвана ошибка? Я тут рву волосы.