好的,我已经创建了一个我在IIS中测试过的WCF并且工作正常。
有一个网站在运行,我已完成以下操作,将此服务添加到该域:
将WCF DLL复制到网站的bin文件夹中。
- 还复制了此服务使用的所有DLL。 (只是Newtonsoft.Json)
使用以下行处理新的.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="wcfOnScore.OnScoreQuery"%>
- 并将以下内容添加到网站的web.config文件中:
<System.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WithDebug">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
</protocolMapping>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
<services>
<service name="wcfOnScore.OnScoreQuery">
<endpoint address="http://www.onscore.co.za/OnScoreQuery.svc"
binding="basicHttpBinding"
listenUri="/"
contract="wcfOnScore.IOnScoreQuery" />
</service>
</services>
</system.serviceModel>
现在这似乎有效。我在浏览器中打开它时会看到以下页面:
然而,它并没有悲伤地工作。我试图从c#Xamarin android应用程序中使用此服务。它应该返回一个JSON字符串。 当它在本地托管时这样做很好 - 这让我相信问题不在WCF中,而在于我试图托管它的方式。
我可能错过了什么?还是其他任何替代方案?
先谢谢大家。
修改
以为我会包含错误。
“System.Reflection.TargetInvocationException:调用目标已抛出异常。”
完成的eventhandler参数返回的内容。
答案 0 :(得分:0)
这就是为什么我得到错误的答案,而不是真正的解决方案。 (尚)
我使用语句注释掉了Newtonsof.Json。并输入一个简单的文本返回工作。
因此,我推断出WCF代码无法获取json.dll。
如果您想用作参考,看起来上面的所有内容都已正确完成。 (除了.dll当然)。
答案 1 :(得分:0)
如果您尝试返回JSON,请首先在浏览器上测试它。您的服务是基于SOAP的服务,因为您使用的是basicHttpBinding
。要在浏览器上获得结果,请将绑定更改为WebHttpBinding
并在Web配置中添加以下内容。
<endpointBehaviors>
<behavior name="RestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
如果您能够在浏览器上获得响应,您也可以通过Android获得响应。