【问题标题】:WCF service shutting downWCF 服务关闭
【发布时间】:2015-01-30 12:44:40
【问题描述】:

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

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

我在 web.config(Service) 和 app.config(Client) 中添加了超时参数。

我已尝试按照here 所述记录错误,但仍然没有记录错误。

是什么导致这个错误,任何帮助将不胜感激。

更新 1 这是我的trace.svclog

更新 2 这是我的全部Code 这包含 2 个解决方案,HelloWorld 是一个 C++ Dll 和 WcfServices 包含服务器(将加载 C++ Dll)和客户端项目。这些项目都基于互联网解决方案进行了迄今为止的所有更改。

问候, 吉腾德拉

【问题讨论】:

  • 您在哪里托管 WCF ?在 IIS/WAS 或 windows 服务中?
  • @SameerAzazi 仅在本地系统的 IIS 中

标签: c# wcf wcf-client


【解决方案1】:

将以下内容添加到您的主机 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);
 }

【讨论】:

  • 是的,我会试一试,让你知道
  • @Giorgi Nakeuri,我已经添加并生成了trace.svclog,你可以在我上面的问题中找到附加的trace.svc。
  • 这是一个奇怪的主机。我无法下载文件。请上传到不同的主机
  • @Giorgi Nakeuri,抱歉,已更改链接。
  • @Jithendra,错误说客户端和服务绑定可能不匹配。内容类型应用程序/soap+xml; charset=utf-8 被发送到需要 text/xml 的服务; charset=utf-8
【解决方案2】:

我的问题是在 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 引导我完成此任务。

问候,

吉森德拉。

【讨论】:

    【解决方案3】:

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

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

    1. 我将非托管 c++ 库转换为托管 c++ 互操作库(支持 CLR 功能)。
    2. 就像我在 C# 中访问它们一样。

    这些变化就像魅力一样,而且非常稳定。

    希望这个改进的答案对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 2010-09-06
      • 2012-03-19
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多