Zaczynam używać mono droid lub Xamarin dla Androida, więc moim pomysłem było ponownie użyj większości kodu, którego już używam w .NET.Xamarin Android - Wywołanie żądania spoczynkowego ze złożonym parametrem (obiekt) generuje wyjątek, w .NET działa dobrze (przy użyciu fabryki kanałów)
Jedną z rzeczy, do których potrzebuję mojej aplikacji na Androida i iOS, jest nawiązywanie połączeń z usługami sieciowymi udostępnianymi za pomocą wcf rest z kodowaniem json.
Więc mój kod jest prosty:
WebHttpBinding webBinding = new WebHttpBinding();
EndpointAddress endPointAddress = new EndpointAddress("http://192.168.126.24:8025/Services/SecurityManagement");
ChannelFactory<ISecurityManagement> newFactory = new ChannelFactory<ISecurityManagement>(webBinding, endPointAddress);
newFactory.Endpoint.Behaviors.Add(new WebHttpBehavior() { DefaultOutgoingRequestFormat = System.ServiceModel.Web.WebMessageFormat.Json, DefaultOutgoingResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json });
newFactory.Endpoint.Behaviors.Add(new RestEndPointBehavior());
ISecurityManagement newProxy = newFactory.CreateChannel();
ValidateUserExistenceOutput output = newProxy.ValidateUserExistence(new ValidateUserExistenceInput() { Domain = "CRITICAL", Username = "myUserName" });
wystarczająco proste, aby uzyskać mnie zaczęło (przynajmniej, że był mój pomysł o mono zrobić w .net ponownego użycia w mono)
Ale kiedy biegnę kod ten pojawia się następujący wyjątek wyjątek:
System.NotSupportedException: Loading...
07-25 10:43:40.922 E/mono (1950):
07-25 10:43:40.922 E/mono (1950): Unhandled Exception:
07-25 10:43:40.922 E/mono (1950): System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unkno07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono (1950): at System.ServiceModel.MonoIn
07-25 10:43:40.922 E/mono-rt (1950): [ERROR] FATAL UNHANDLED EXCEPTION: System.NotSupportedException: Conversion from the argument parameterType 'BusinessOrchestration.SecurityManagement.InputObjects.ValidateUserExistenceInput' is not supported
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.QueryStringConverter.ConvertValueToString (System.Object parameter, System.Type parameterType) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Dispatcher.WebMessageFormatter+WebClientMessageFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.Description.WebHttpBehavior+ClientPairFormatter.SerializeRequest (System.ServiceModel.Channels.MessageVersion messageVersion, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.ServiceModel.MonoInternal.ClientRuntimeChannel.CreateRequest (System.ServiceModel.Dispatcher.ClientOperation op, System.Object[] parameters) [0x00000] in <filename unknown>:0
07-25 10:43:40.922 E/mono-rt (1950): at System.Servic
The program 'Mono' has exited with code 0 (0x0).
używam dokładnie tego samego kodu w .NET 4.5 aplikacji i działa dobrze, wydaje się, że jego braku podczas przekształcania obiektu do ciąg (ciąg json, przypuszczam).
Czy powinien działać bezpośrednio w trybie mono, ponieważ działa on w .NET?
Czy masz usługi ze złożonymi obiektami wejściowymi? Jakiego api używasz do wykonywania tych połączeń?
naprzód Dzięki za pomoc,
Luis Pinho
Czy rozwiązałeś ten problem? Stoję w obliczu tego samego problemu, który nie jest w stanie pójść o jeden krok naprzód.Googled o tym nie ma zasobów. Pomóż mi, jeśli masz jakiś pomysł. – dafodil
podobne problemy są opisane tutaj: https://stackoverflow.com/questions/44650314/mono-rest-service-not-supporting-post-method – Hcorg
To jest pytanie z 2013 roku ??? –