Tag: #wcf

内容类型为text / html; charset =响应消息的UTF-8与绑定的内容类型不匹配(text / xml; charset = utf-8)

我创建了WCF服务并使用独立应用程序测试WCF客户端。 我能够使用Internet Explorer查看此服务,也可以在Visual Studio服务引用中查看。 这是错误消息。 “The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8).” 你能告诉我什么可能是错的吗? 谢谢。

如何防止WCF客户端应用程序中的BufferManager / PooledBufferManager浪费内存?

分析一个WCF客户端应用程序(我没有写,但仍然不太了解)通过SOAP与一堆服务进行通信,运行几天后会抛出一个OutOfMemoryException,我发现.net的PooledBufferManager将会永远不会释放未使用的缓冲区,即使应用程序内存不足,也会导致OOME。 这当然符合规范: http : //msdn.microsoft.com/en-us/library/ms405814.aspx 当垃圾收集回收缓冲池时,池及其缓冲区被销毁。 请随意回答下面的一个问题,因为我有一堆问题,一些更一般的问题,以及一些特定于我们的应用程序使用BufferManager。 首先是关于(默认的Pooled)BufferManager的几个一般性问题: 1)在我们有GC的环境中,为什么我们需要一个可以保留未使用内存的BufferManager,即使它导致OOME? 我知道,有BufferManager.Clear(),您可以使用它来手动删除所有缓冲区 – 如果您有权访问BufferManager,即。 进一步了解为什么我似乎无法访问。 2)尽管MS声称“​​这个过程比每次需要使用一个缓冲区创建和销毁缓冲区要快得多。”,他们不应该把它留给GC(例如它的LOH)并优化GC而不是? 3)当做一个BufferManager.Take(33 * 1024 * 1024)时,我会得到一个64M的缓冲区,因为PooledBufferManager将缓存该缓冲区以供以后重用,这可能 – 好吧,在我的情况下它不是,因此它是纯粹浪费记忆 – 比如34M,或50M,或64M,是需要的。 因此创建一个可能非常浪费的BufferManager是明智的,HttpsChannelFactory使用(默认情况下,我假设)? 我没有看到内存分配的性能如何重要,特别是当我们讨论WCF和网络服务时,应用程序将每隔10秒TOPS,通常更多秒甚至几分钟。 现在有一些更具体的问题与我们的应用程序使用BufferManagers有关。 该应用程序连接到几个不同的WCF服务。 对于它们中的每一个,我们为http连接维护一个连接池,因为连接可能同时发生。 检查一个堆转储中的单个最大对象,一个64M字节数组,在初始化时只在我们的应用程序中使用过一次,之后不需要,因为来自服务的响应仅在初始化时才很大,即btw。 对于我使用过的许多应用程序来说都是典型的,即使这可能会受到优化(缓存到磁盘等)。 WinDbg中的GC根分析产生以下结果(我将我们的专有类的名称清理为’MyServiceX’等): 0:000:x86> !gcroot -nostacks 193e1000 DOMAIN(00B8CCD0):HANDLE(Pinned):4d1330:Root:0e5b9c50(System.Object[])-> 035064f0(MyServiceManager)-> 0382191c(MyHttpConnectionPool`1[[MyServiceX, MyLib]])-> 03821988(System.Collections.Generic.Queue`1[[MyServiceX, MyLib]])-> 038219a8(System.Object[])-> 039c05b4(System.Runtime.Remoting.Proxies.__TransparentProxy)-> 039c0578(System.ServiceModel.Channels.ServiceChannelProxy)-> 039c0494(System.ServiceModel.Channels.ServiceChannel)-> 039bee30(System.ServiceModel.Channels.ServiceChannelFactory+ServiceChannelFactoryOverRequest)-> 039beea4(System.ServiceModel.Channels.HttpsChannelFactory)-> 039bf2c0(System.ServiceModel.Channels.BufferManager+PooledBufferManager)-> 039c02f4(System.Object[])-> 039bff24(System.ServiceModel.Channels.BufferManager+PooledBufferManager+BufferPool)-> 039bff44(System.ServiceModel.SynchronizedPool`1[[System.Byte[], mscorlib]])-> 039bffa0(System.ServiceModel.SynchronizedPool`1+GlobalPool[[System.Byte[], mscorlib]])-> 039bffb0(System.Collections.Generic.Stack`1[[System.Byte[], […]

反序列化从Android应用程序发送到WCF Web服务的JSON对象

我正在尝试将JSON对象发送到我的webservice方法,该方法定义如下: public String SendTransaction(string trans) { var json_serializer = new JavaScriptSerializer(); Transaction transObj = json_serializer.Deserialize(trans); return transObj.FileName; } 我想在哪里返回我作为参数获得的这个JSON字符串的FileName。 android应用程序的代码: HttpPost request = new HttpPost( “http://10.118.18.88:8080/Service.svc/SendTransaction”); request.setHeader(“Accept”, “application/json”); request.setHeader(“Content-type”, “application/json”); // Build JSON string JSONStringer jsonString; jsonString = new JSONStringer() .object().key(“imei”).value(“2323232323”).key(“filename”) .value(“Finger.NST”).endObject(); Log.i(“JSON STRING: “, jsonString.toString()); StringEntity entity; entity = new StringEntity(jsonString.toString(), “UTF-8”); entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, […]

如何在使用传统SOAP服务时创建自定义XML命名空间属性?

我有一个传统的Tibco SOAP服务,我需要从中获取一些数据。 不幸的是,这项服务非常特别关于请求消息上的XML命名空间属性。 在使用PeopleSoft( https://en.wikipedia.org/wiki/PeopleCode )的服务时,我也遇到了这类问题。 我从服务中获得了.wsdl并创建了一个服务引用。 开箱即用,.Net生成的XML请求消息是: SysAdmin 123 Main St New York NY US 实际上是什么(我用SoapUI想出来): SysAdmin 123 Main St New York NY US 请注意body标记中缺少xsi和xsd前缀。 问:如何让.Net发送正确的XML,而不是手动滚动XML文档并手动将其发送到服务?

在机器上获取所有IP地址

如何获取运行我的应用程序(C#NET控制台应用程序)的计算机上连接的所有IP地址? 我需要将WCF服务绑定到主IP地址,并返回完整IP地址列表的列表。 using System.Net; string myHostName = Dns.GetHostName().ToString(); string ipAddress = Dns.Resolve(HostName).AddressList[0].ToString(); 这就是我现在使用的获取主IP地址,但我无法弄清楚如何让其余的返回它们。 如果我将WCF服务绑定到localhost:8000,是否会在主服务器上公开它?

响应消息的内容类型application / xml; charset = utf-8与绑定的内容类型不匹配(text / xml; charset = utf-8)

我尝试使用独立应用程序使用WCF Web服务。 我能够使用Internet Explorer查看此服务,也可以在Visual Studio服务引用中查看。 这是我得到的错误 The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). 如何更改此选项以使用正确的内容类型? 这是我的配置文件 这是堆栈 {System.ServiceModel.ProtocolException: The content type application/xml;charset=utf-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be […]

WCF和数据契约接口

在使用svcutil创建WCF代理时,是否可以包含数据契约inheritance的接口,例如: public class SomeType: ISometype { public string Name { get; set; } } public interface ISometype { public string Name { get; set; } } 当我使用它创建代理时,在客户端创建SomeType类型但是没有创建接口,也没有inheritance。 我尝试将接口标记为DataContract,但该属性不允许。 有可能做我想做的事吗?

ASP.NET 5添加WCF服务引用

在Visual Studio 2015预览版(预发行版)中,如何为WCF服务添加服务引用?

如何在WCF中使用自定义序列化或反序列化来强制datacontact的每个属性上的新实例?

我有一个datacontact,其中有许多成员都有自定义类 如果反序列化时属性为null,我想强制一个新实例。 有没有办法做到这一点?

WCF错误:405方法不允许

坚持这个问题。 我有一个包含2个项目的解决方案,其中一个是带有jquery ajax调用的普通旧html,而另一个是WCF服务。 html页面将发出对WCF服务的ajax调用以获取json字符串并将其用于显示目的。 现在的问题是每当我在调试模式下运行时,html页面和WCF都将以不同的端口启动。 当我执行测试时(即在Firefox中调用类型= OPTIONS获得405 Method Not Allowed错误),这为我创建了一个跨源问题。 我会在我的ajax脚本上检查调用方法,并且WCF服务是相同的(GET)。 我搜索谷歌但发现要么我必须安装扩展程序或在IIS上执行一些配置,我发现这很麻烦,因为我正在做的事情很简单。 下面是一个例子,我将在web.config中添加以下配置,但它不起作用: 任何人都有任何想法摆脱这个恼人的问题? 编辑:只是添加,我正在使用与VS Studio 2012一起提供的IIS Express运行调试 添加WCF代码并更新web.config [ServiceContract] public interface IMemberInfo { [WebInvoke(Method = “GET”, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json )] [OperationContract] string GetMemberInfoById(); // TODO: Add your service operations here } 我的剧本: $(document).ready(function () { $.ajax(“http://localhost:32972/SimpleMemberInfo.svc/GetMemberInfoById”, { cache: false, beforeSend: function […]