gpt4 book ai didi

wcf - 为 netstandard Xamarin.Forms 项目生成 WCF 客户端代理

转载 作者:行者123 更新时间:2023-12-04 08:32:03 24 4
gpt4 key购买 nike

我用 netstandard2.0 创建了一个 Xamarin.Forms 项目目标库而不是共享或 PCL 库。到目前为止,这已编译并有效。我正在使用 Visual Studio 2017 社区的 up2date 版本。

我还创建了一个 WCF 服务,该服务将托管在 Windows 本身(而不是 IIS)上。我已将 app.config 配置为提供元数据交换端点:

<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
<services>
<service behaviorConfiguration="MM.Server.ServiceServerBehavior" name="MM.Server.ServiceServer">
<endpoint address="net.tcp://localhost:8730/MMServer/" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServiceServer" bindingName="NetTcpBinding_IServiceServer_EndPoint" contract="MM.Contracts.IServiceServer">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="http://localhost:8731/MMServer/mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8730/MMServer/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MM.Server.ServiceServerBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8731/MMServer/mex" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IServiceServer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="16384"/>
<reliableSession ordered="true" inactivityTimeout="01:00:00" enabled="false"/>
<security mode="None"><!-- TODO: Add more security later -->
<transport clientCredentialType="None" protectionLevel="None"/>
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>

这是一个非常简单的配置,我现在不关心安全性。服务运行,成功。

现在我不能简单地向我的 Xamarin.Forms 项目添加服务引用,因为 netstandard不提供 System.ServiceModel .

我发现 I can use the SLsvcUtil.exe从 Silverlight SDK 生成与 Xamarin.Forms 兼容的 WCF 服务的客户端代理 netstandard相反,但是我无法让它运行。

无论我如何在 WCF 服务运行时尝试使用 SLsvcUtil.exe,我总是收到错误消息:
Error: An error occurred in the tool.
Error: Object reference not set to an instance of an object.

这是我用来执行 SLsvcUtil.exe 的批处理:
set "namespace=*,MM.Services"
set "mexPath=http://localhost:8731/MM/mex"
set "svcutil=C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Tools\SLsvcUtil.exe"
set "outputDir=C:\vsproj\Xamarin\MM\MM.App"
"%svcutil%" %mexPath% /directory:"%outputDir%" /namespace:"%namespace%"
pause

http://localhost:8731/MM/mex成功返回完整的 WSDL。

如何为面向 netstandard2.0 的 Xamarin.Forms 应用程序获取工作生成的客户端代理?我对任何导致相同预期结果的替代方案持开放态度。

最佳答案

查看用于 .NET Core 的官方 Microsoft WCF 客户端。我认为这也适用于 Xamarin,因为它是为 .NET Core 设计的。

GitHub .NET Core WCF Client Libraries

Web Service Reference guide

Microsoft WCF Web Service Reference Provider

关于wcf - 为 netstandard Xamarin.Forms 项目生成 WCF 客户端代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47251240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com