WCF服务正在关闭

时间:2015-01-30 12:44:40

标签: c# wcf wcf-client

我一直在尝试在C#客户端项目中访问WCF服务功能(也加载C ++ Dll)。

当我启动客户端程序时,它会获取服务,加载dll,但突然WCF服务将从系统托盘终止。

我在web.config(服务)和app.config(客户端)中添加了超时参数。

我试图将错误记录为here,但仍然没有记录错误。

导致此错误的原因,任何帮助将不胜感激。

更新1 这是我的trace.svclog

更新2 这是我的整个Code 这包含2个解决方案,HelloWorld是一个C ++ Dll& WcfServices包含服务器(将加载C ++ Dll)和客户端项目。这些项目根据互联网解决方案进行了所有变更。

此致 Jithendra

3 个答案:

答案 0 :(得分:3)

将以下内容添加到您的主机Web.Config中。崩溃后打开C:\ Trace.svclog并查看红线。查看XML选项卡,您将看到有关错误的详细信息。

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name='traceListener' type='System.Diagnostics.XmlWriterTraceListener' initializeData='C:\Trace.svclog'/>
        </listeners>
      </source>
    </sources>
</system.diagnostics>

哦,伙计,我终于开始工作了。 你应该做的是

[DllImport(@"C:\...\Helloworld.dll", CharSet = CharSet.Ansi, EntryPoint = "Encode01", ExactSpelling = false, SetLastError = true, CallingConvention = CallingConvention.Cdecl)]

[return: MarshalAs(UnmanagedType.SysInt)]
public static extern IntPtr Encode01();

 public string Genkey()
 {
     IntPtr ptr = Encode01();
     return Marshal.PtrToStringAnsi(ptr);
 }

答案 1 :(得分:1)

我的问题出现在c ++ Dll中,而不是我在WCF服务中加载的WCFService。 按照Link的解释,我正在做

这个

char* pszReturn = new char[256];

而不是

char* pszReturn = NULL;
pszReturn = (char*)::CoTaskMemAlloc(ulSize);

这导致返回值时出错,并在结果中抛出异常。

Content Type application/soap+xml; charset=utf-8 was sent to a service expectingtext/xml; charset=utf-8. The client and service bindings may be mismatched.

希望能帮助某人并特别感谢@Giorgi Nakeuri带领我这一点。

此致

Jithendra。

答案 2 :(得分:0)

我和@Giorgi Nakeuri的上述答案都是正确的,但当我将WCF服务作为独立服务安装并尝试运行客户端时,它又开始抛出相同的异常。

我使用Visual Studio 2013,在.Net 4.5中将正常的非托管c ++库加载到C#中会引发错误(我不确切知道原因),这就是我为使其稳定所做的一切。 / p>

  1. 我将非托管c ++库转换为托管c ++互操作库(支持CLR功能)。
  2. 与我在C#中访问它们的方式相同。
  3. 这些变化像魅力和稳定一样。

    希望这个改进的答案有助于某人。