c# - Xamarin WCF BasicHttpBinding-未实现方法或操作

标签 c# methods xamarin basichttpbinding notimplementedexception

快速背景信息:
有一个带有BasicHttpBinding身份验证的wcf。 Dataservice.cs包含基于服务元数据(使用svcutil生成)的dataserviceclient。

我首先使用代码制作了一个控制台应用程序,并且运行良好,然后创建了一个xamarin android项目。我复制了代码。引用了system.runtime.serialization和system.servicemodel。这给了我一个方法或操作未实现的错误。

主要代码:

     base.OnCreate(bundle);


        BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
        EndpointAddress address = new EndpointAddress("https://serviceurl/service1.svc");
        PermissiveCertificatePolicy.Enact("CN=MySelfSignedCert");

        var client = new DataServiceClient(binding, address);

        client.ClientCredentials.UserName.UserName = "Username";
        client.ClientCredentials.UserName.Password = "Passord";

        try
        {

            var projects = client.GetDataTest(1);
        }
        catch (Exception ex)
        {
            var error = ex.Message;

        }


我是Xamarin编程的新手,所以这里可能遗漏关键点,但是请记住,它可以作为控制台应用程序使用,并且该服务在线(而不是localhost)。

Unhandled Exception:


System.NotImplementedException:未实现该方法或操作。

07-20 11:35:39.704 D / Mono(1452):DllImport尝试加载:'/system/lib/liblog.so'。
07-20 11:35:39.704 D / Mono(1452):DllImport加载了库'/system/lib/liblog.so'。
07-20 11:35:39.704 D / Mono(1452):DllImport在以下位置搜索:'/system/lib/liblog.so'('/system/lib/liblog.so')。
07-20 11:35:39.704 D / Mono(1452):搜索'__android_log_print'。
07-20 11:35:39.704 D / Mono(1452):探测'__android_log_print'。
07-20 11:35:39.704 D / Mono(1452):找到为'__android_log_print'。
07-20 11:35:39.708 I / MonoDroid(1452):异常例外:
07-20 11:35:39.708 I / MonoDroid(1452):System.NotImplementedException:该方法或操作未实现。
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.BasicHttpBinding.CreateSecurityBindingElement()[0x00025]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding_4_5.cs:125
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.BasicHttpBinding.CreateBindingElements()[0x00006]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/BasicHttpBinding_4_5.cs:98
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.Channels.CustomBinding..ctor(System.ServiceModel.Channels.Binding绑定)[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CustomBinding.cs:60
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.Channels.Binding.CreateContext(System.ServiceModel.Channels.BindingParameterCollection参数)[0x00000]在

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/Binding.cs:96
07/20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.Channels.Binding.CanBuildChannelFactory [TChannel](System.ServiceModel.Channels.BindingParameterCollection参数)[0x00011]在

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/Binding.cs:267
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.ChannelFactory.CreateFactory()[0x000ad]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs:199
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.ChannelFactory.OnOpening()[0x00006]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs:383
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.Channels.CommunicationObject.ProcessOpening()[0x00017]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CommunicationObject.cs:276
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CommunicationObject.cs:169
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.Channels.CommunicationObject.Open()[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CommunicationObject.cs:164
07-20 11:35:39.708 I / MonoDroid(1452):位于System.ServiceModel.ChannelFactory.EnsureOpened()[0x00058]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory.cs:297
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.ChannelFactory`1 [TChannel] .CreateChannel()[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory_1.cs:108
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.ClientBase`1 [TChannel] .CreateChannel()[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientBase.cs:266
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.ClientBase`1 [TChannel] .get_InnerChannel()[0x0000b]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientBase.cs:186
07-20 11:35:39.708 I / MonoDroid(1452):在System.ServiceModel.ClientBase`1 [TChannel] .get_Channel()[0x00000]中

/Users/builder/data/lanes/2923/52635947/source/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientBase.cs:192
07-20 11:35:39.708 I / MonoDroid(1452):位于C:\ Users \ username \ documents \ visual studio 2015 \ Projects \ somethingMobileApp中的DataServiceClient.GetProjects(Int32 firmaid)[0x00001]

\ somethingMobileAppAndroid \ DataService.cs:10752
07-20 11:35:39.708 I / MonoDroid(1452):在C:\ Users \ username \ documents \ visual studio 2015 \ Projects中的移动应用Android.MainActivity.OnCreate(Android.OS.Bundle bundle)[0x0006d]

\ somethingMobileApp \ somethingMobileAppAndroid \ MainActivity.cs:50
07-20 11:35:39.708 D / Mono(1452):DllImport搜索:'__Internal'('(null)')。
07-20 11:35:39.712 D / Mono(1452):搜索'java_interop_jnienv_new_string'。
07-20 11:35:39.712 D / Mono(1452):探测'java_interop_jnienv_new_string'。
07-20 11:35:39.712 D / Mono(1452):找到为'java_interop_jnienv_new_string'。
07-20 11:35:39.716 D / Mono(1452):DllImport搜索:'__Internal'('(null)')。
07-20 11:35:39.716 D / Mono(1452):搜索'java_interop_jnienv_throw'。
07-20 11:35:39.716 D / Mono(1452):探测'java_interop_jnienv_throw'。
07-20 11:35:39.716 D / Mono(1452):发现为'java_interop_jnienv_throw'。
发生未处理的异常。

07-20 11:35:42.112 E / mono(1452):
07-20 11:35:42.112 E / mono(1452):未处理的异常:
07-20 11:35:42.112 E / mono(1452):System.NotImplementedException:该方法或操作未实现。
07-20 11:35:42.112 E / mono(1452):at(包装动态方法)System.Object:c637c172-2e79-4a17-a720-5e2325d945f7(intptr,intptr,intptr)
07-20 11:35:42.112 E / mono(1452):at(wrapper native-to-managed)System.Object:c637c172-2e79-4a17-a720-5e2325d945f7(intptr,intptr,intptr)
在mgmain JNI_OnLoad中
07-20 11:35:42.112 E / mono-rt(1452):[错误]致命异常:System.NotImplementedException:该方法或操作未实现。
07-20 11:35:42.112 E / mono-rt(1452):at(包装动态方法)System.Object:c637c172-2e79-4a17-a720-5e2325d945f7(intptr,intptr,intptr)
07-20 11:35:42.112 E / mono-rt(1452):at(wrapper native-to-managed)System.Object:c637c172-2e79-4a17-a720-5e2325d945f7(intptr,intptr,intptr)

有什么建议吗? :)

最佳答案

您看到的错误很可能是由于Mono和Xamarin.Android中WCF实现的当前限制引起的。可以猜测一下,身份验证模式可能是问题的核心:


  支持使用BasicHttpSecurityMode.Transport进行身份验证:
  http://docs.xamarin.com/guides/cross-platform/application_fundamentals/web_services/#Calling_a_WCF_Service_with_Client_Credential_Security
  
  尚不支持使用BasicHttpSecurityMode.TransportWithMessageCredential进行身份验证:
  http://forums.xamarin.com/discussion/6493/wcf-basichttpbinding-with-transportwithmessagecredential-username-failure-ios-and-android


(来自http://forums.xamarin.com/discussion/comment/44741/#Comment_44741

关于c# - Xamarin WCF BasicHttpBinding-未实现方法或操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38478079/

相关文章:

c# - 如何读取web api 2中的文件数据?

Java:从另一个类的主方法调用主方法

javascript - javascript音频方法的文档?

android - 当 ToolbarPlacement 位于底部且 ContentPage 计数大于 4 时,TabbedPage Toolbar 仅显示 Activity 的 ToolbarItem

c# - 如何判断 linq to sql 对象是新的、修改的还是未更改的?

c# - 如何查看我的(c# 实现的)POST 发送的信息?

c# - MS 图表烛台 如何设置尾部颜色

java - 任意维度的数组作为方法参数

android - Xamarin PCL 与 SL 混淆

listview - 如何更改 Xamarin 中的章节标题字体样式?