我有一个WCF服务,我想将它作为RESTfull服务和SOAP服务公开.以前有人做过这样的事吗?
构建Windows服务最简单的语言是什么?
在这种情况下,最简单的将被定义为最少的代码量,以及进入该语言的最低点.
我需要从本机C++应用程序连接到WCF服务.我尝试了下面的链接并且它可以使用wsHttpBinding.
但是,我需要使用自定义绑定连接到WCF服务.这就是我的应用程序配置文件中自定义绑定的代码的样子
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="ResourceCenterEndpoint5">
<mtomMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Default" maxBufferSize="65536" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</mtomMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Ntlm"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536"
proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</binding>
</bindings>
<client>
<endpoint address="http://usaabcxyzas1.na.abc.com/Build15/ReserSVC/Resource.svc"
binding="customBinding" bindingConfiguration="ResourceCenterEndpoint5"
contract="ServiceReference2.ResourceCenterServiceContract"
name="ResourceCenterEndpoint5">
<identity>
<userPrincipalName value="devlts_srv@na.abc.com" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我有一个桥DLL,它是一个托管C++ DLL.托管C++ DLL将C#Client连接到本机应用程序.但是,由于Web服务使用自定义绑定,因此无法从托管C++ DLL连接到Web Service.我得到的错误是:
使用客户端身份验证方案"匿名"未授权http请求.从服务器收到的身份验证标头是"Negotiate,NTLM"
这就是我尝试从manged C++ dll连接到Webservice的方法:
Binding^ binding = gcnew BasicHttpBinding();
EndpointAddress^ …Run Code Online (Sandbox Code Playgroud) 我有点生疏,实际上我的C++真的很生疏.从大学一年级开始就没有触及它,所以已经有一段时间了.
无论如何,我正在做与大多数人相反的事情.从C++调用C#代码.我在网上做了一些研究,似乎我需要创建一些托管C++来形成一个桥梁.使用__declspec(dllexport)然后从中创建一个dll并使用整个东西作为包装器.
但我的问题是 - 我真的很难找到例子.我找到了一些基本的东西,有人想将C#版本用于String.ToUpper(),但这是非常基本的,只是一个小代码片段.
任何人都有任何想法,我可以在哪里寻找更具体的东西?注意,我不想使用COM.目标是根本不触及C#代码.
更新:在这里查看协议,我无法弄清楚Unsized Envelope Record中的内容.我在网上找不到任何例子.
原版的:
我有以下WCF服务
static void Main(string[] args)
{
var inst = new PlusFiver();
using (ServiceHost host = new ServiceHost(inst,
new Uri[] { new Uri("net.pipe://localhost") }))
{
host.AddServiceEndpoint(typeof(IPlusFive), new NetNamedPipeBinding(NetNamedPipeSecurityMode.None), "PipePlusFive");
host.Open();
Console.WriteLine("Service is Available. Press enter to exit.");
Console.ReadLine();
host.Close();
}
}
[ServiceContract]
public interface IPlusFive
{
[OperationContract]
int PlusFive(int value);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class PlusFiver : IPlusFive
{
public int PlusFive(int value)
{
Console.WriteLine("Adding 5 to " + value);
return value + 5; …Run Code Online (Sandbox Code Playgroud) 在我工作的地方有一些用C#编写的软件和一些用C++编写的软件(最重要的).前段时间我们决定通过Web服务发送堆栈跟踪和异常信息来跟踪软件中的任何可能问题.所以我带了一个WCF服务,它获取信息并将它们存储在数据库中并发送自动电子邮件.它工作,我们必须通过密码保护它,它已经完成,但现在我想要我们的其他软件,用C++编写的软件,使用这个web服务(这个软件在windows和linux上都使用,所以我们不能只做在用户机器中调用另一个软件).
我已经开始搜索它,并找到了关于如何使用gSOAP的本教程,到目前为止对我没有多大帮助(很多错误,它不是很详细,并且web.config文件无法读取).我想知道是否有任何其他方法来实现这一目标.在adition中,由于我在我的webservice上使用身份验证,它现在有一个wsHttpBinding(gSOAP不支持AFAIK ).
你能帮助我吗?
问题是什么.如何从没有.NET的本机应用程序与WCF"世界"进行交互?
编辑:对不起,我应该更具体,因为看起来WCF涵盖了如此广泛的范围.我在考虑使用WCF/TCP通信作为通信/ IPC机制的几个应用程序的情况,现在需要集成一个没有.NET可用的本机(C++)应用程序.
我有一个用C Sharp开发的dll.如何使其在其他语言中可用,例如PHP或Delphi?
我还没有找到解决这个问题的方法.这样做有什么简单的方法吗?