我有一个WCF服务,当我调用它时,字符串返回null并且我无法找出原因!
这是调用代码:
new Thread(() =>
{
string returned = _client.Service.GetString();
this.Dispatcher.BeginInvoke((Action)(() => MessageBox.Show(returned)));
}).Start();
这是服务实现:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
class MyService: ServiceBase, IMyService
{
public string GetString()
{
return "Returned";
}
这就是界面:
[ServiceContract]
public interface IMyService: IServiceBase
{
[OperationContract]
string GetString();
}
调用代码只是返回null但是客户端连接到服务正常,我错过了什么?
答案 0 :(得分:1)
如果您还没有,可以为WCF配置跟踪并从日志文件中获取大量内容。不知道配置的确切内容或者如何构建_client我不能说出了什么问题。您在此处发布的代码看起来应该可以正常工作。
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "WcfTraces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
将此添加到app.config或web.config将在与配置文件相同的目录中创建一个WcfTraces.svclog文件,其中包含各种数据。您应该只需双击日志文件即可使用Microsoft服务跟踪查看器打开它。