Tag: #wcf

堆内存问题

有一个WCF自托管服务,必须在99%的时间内工作。 有时我们会遇到一些像这样的内存问题: 但在此问题之后,服务正常。 我们如何管理这个? 任何提示和要点,以提供强大的服务,将在不同的情况下生存,非常受欢迎。

如何在azure上以编程方式托管wcf服务

我想在Azure上托管一个wcf服务,但是这个实例化必须是动态的,所以我想根据需要实例化新服务,但是…… new ServiceHost(new Service(),<>) 什么应该是基础Uri(方案,服务器名称和端口): 工人角色 一个网络角色 外部端点 内部终点。 (出于性能原因,有些服务需要在负载均衡器后面互相交谈,但是如何?) 这些也是可能的: 每个Web角色有多个服务主机。 不同的端点绑定即。 我想在Http上使用一个servicehost,另一个Net.tcp如果需要,我需要在部署时在csdef文件中声明这两个协议,还是可以按需编程添加它们(又名。后期绑定)? 我正在寻找一个解决方案,因为$$$原因不涉及ServiceBus。

以编程方式在.NET WCF服务中创建端点

我有一个专门用于Web服务的类。 现在,我已将其编写为查询http://www.nanonull.com/TimeService/TimeService.asmx 。 该类将由使用VBScript的遗留应用程序使用,因此它将使用Namespace.ClassName约定进行实例化。 我在编写代码以使绑定和端点与我的类一起工作时遇到了麻烦,因为我将无法使用配置文件。 我见过的示例讨论使用SvcUtil.exe但我不清楚如果Web服务是外部的,如何执行此操作。 谁能指出我正确的方向? 这是我到目前为止,编译器崩溃IMyService: var binding = new System.ServiceModel.BasicHttpBinding(); var endpoint = new EndpointAddress(“http://www.nanonull.com/TimeService/TimeService.asmx”); var factory = new ChannelFactory(binding, endpoint); var channel = factory.CreateChannel(); HelloWorld = channel.getCityTime(“London”);

在C#中将GZIP添加到WCF REST服务

我在C#.NET WCF Web服务上启用GZIP压缩时遇到了麻烦,希望有人可能知道我在App.conf配置文件中缺少的内容,或者在调用启动Web服务时需要多少额外function。代码。 我已经按照将GZIP压缩应用到WCF服务的链接指向下载Microsoft添加GZIP的示例,但该示例与我如何设置我的Web服务无关。 所以我的App.conf看起来像 我只是将配置和GZIP类从MS示例复制到我的项目中,并添加了我相关的Web服务配置。 我用来启动Windows服务的代码是: WebServiceHost webserviceHost = new WebServiceHost(typeof(MyService.Service1)); webserviceHost.Open(); webservice运行正常,但是当从Web浏览器拨打电话时,Fiddler没有检测到任何带有GZIP压缩的响应。 我还尝试以编程方式使用GZIP设置和运行Web服务,但失败了。 绿色我不知道还需要配置什么,任何建议都很棒 我深入研究了这一点并发现,因为我正在运行Web服务作为WebServiceHost对象,它必须使用WebServiceHost默认的WebHTTPBinding对象覆盖app.conf文件中的自定义GZIP绑定,这意味着任何即将发生的事情不会对Web服务进行编码。 为了解决这个问题,我想我会以编程方式将自定义GZIP绑定编写到代码中 var serviceType = typeof(Service1); var serviceUri = new Uri(“http://localhost:8080/webservice”); var webserviceHost = new WebServiceHost(serviceType, serviceUri); CustomBinding binding = new CustomBinding(new GZipMessageEncodingBindingElement(), new HttpTransportBindingElement()); var serviceEndPoint = webserviceHost.AddServiceEndpoint(typeof(IService), binding, “endpoint”); webserviceHost.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true }); webserviceHost.Open(); […]

C#WCF插件的设计和实现

我想得到一些建议。 我正在开发一个系统,它将在运行时加载插件并要求它们通过WCF端点可用。 我将有一个仅用于配置的MVC 3 Web应用程序,以及将加载不同插件的类库(核心)。 我会很感激如何解决这个问题。 我想加载插件,然后能够创建一个在IIS 7中注册的WCF端点,以访问该插件。 提前致谢 :)

如何使用json动态成员获得WCF DataContract

在我正在开发的项目中,我们需要一个可以包含一些未定义的JSON的DataContract。 DataMember是一些仅对客户端有意义的JSON。 我们希望允许客户向我们发送我们不知道的json。 例: public class Contract { [DataMember] public int clientId; [DataMember] public string json; } 显然,有一个像这样定义的契约需要客户端像这样转义json: { “clientId”:1, “json”: “{\”test\”:\”json\”}” } 显然,这不是我们所需要的。 客户端应该发送给我们的json应该如下所示: { “clientId”:1, “json”: {“test”:”json”} } 可能的解决方案: 使用Stream作为请求正文的合约参数。 工作,但将工作放在我们这边,而不是使用框架。 将“json”定义为DynamicObject。 不起作用。 无法正确写入财产。 使用Newtonsoft库,更改WCF端点中的默认协定序列化程序,以序列化JObject的所有输入。 我们还处理请求的序列化,它会导致我们的应用程序出现问题。 我们宁愿避免这种方式。 有没有人可以解决这个问题? 编辑 该服务提供restjson资源。 它使用webHttpBinding定义单个端点。 操作定义如下(为简单起见,将其拆除): [WebInvoke(Method = “POST”, UriTemplate = “…”, ResponseFormat = WebMessageFormat.Json, RequestFormat = […]

使用多个跟踪侦听器

我有2个WCF服务,我从一个Windows主机托管。 我使用跟踪侦听器将数据记录到应用程序日志中。 我在配置文件中添加了以下代码。 来自两个服务的所有日志都显示在源ReaderServiceLog名称下。 我想要做的是,来自每个服务的日志应该出现在不同的源名称下。 例如,ReaderService中的日志应显示在名称ReaderServiceLog下,InfoService中的日志应显示在InfoServiceLog下。 我修改了我的配置,如下所示。 并使用此代码: private TraceSource ts = new TraceSource(“InfoService”); ts.TraceInformation(outputMessage, aslErrorText); ts.Flush(); 但它不起作用。 它根本不记录任何内容。 我也尝试过这个 。 但它不起作用。 我使用了与上面相同的c#代码。 此代码正确执行日志记录,但同样,这两个服务的名称相同。 即ServiceLog。 我在这里错过了什么吗? 或者还有其他办法吗? 请帮忙

无法连接到LocalDB

我正在尝试运行IIS托管的应用程序(以电影数据库的forms)来教我自己如何设计3层架构程序:MVC应用程序,WCF服务,SQL Server数据库。 由于我没有完整SQL Server的许可证密钥,因此我决定使用LocalDB并使用WCF服务来包装我的存储过程。 这是我第一次使用LocalDB并遇到连接到我的实例v13.0的问题。 我的问题: 在我的生活中,我无法在VS中获取我的项目以连接到LocalDB实例。 我一直收到以下错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。指定的LocalDB实例不存在。 我的连接字符串(来自Web.config): 使用sqlcmd连接到它并运行查询运行正常: Visual Studio SQL Server对象资源管理器可以很好地连接: 连接字符串,当它到达有问题的行时由Visual Studio转义,所以我知道连接字符串没有错误地转义: “Data Source=(localdb)\\v13.0;Initial Catalog=MovieDB;Integrated Security=True;AttachDbFilename=|DataDirectory|\\MovieDB.mdf” 我尝试按照本指南( 第1部分和第2部分 )进行操作,图像至少在2016年4月18日被破坏,所以我无法完全理解我应该做什么。 我只能得到上述错误,因为我将应用程序池标识更改为LocalSystem: 当应用程序池在ApplicationPoolIdentity标识下运行时,我收到此错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 – 发生本地数据库运行时错误。无法获取本地应用程序数据路径。很可能未加载用户配置文件。如果在IIS下执行LocalDB,请确保为此启用了配置文件加载当前用户。 我甚至修改了C:\ windows \ system32 \ inetsrv \ config \ applicationHost.config文件以强制配置文件加载。 依然没有。 我的应用程序在“.NET 4.5”应用程序池下运行 我的代码: […]

如何使用JSON从WCF REST服务返回Base64编码的字节数组?

我有一个简单的WCF REST方法,它将返回一个字节数组中的图像/文件/ etc: [OperationContract] [WebGet(UriTemplate = “TestMethod”)] byte[] TestMethod(); 服务契约绑定到webHttpBinding具有以下行为: 该方法工作正常,除了字节数组的格式如下: [25,15,23,64,6,5,2,33,12,124,221,42,15,64,142,78,3,23] 如果我删除属性defaultOutgoingResponseFormat=”Json” ,则服务默认为XML格式,结果在Base64中编码,如: GQ8XQAYFAiEMfN0qD0COTgMX 这节省了数据传输,特别是在数据变大时。 如何为JSON输出格式启用Base64编码?

如何在代码中使用wsDualHttpBinding设置WCF客户端?

我需要连接到我写的WCF服务,而不必为我正在编写的客户端应用程序部署app.config。 但是,我一直在努力想弄清楚如何在代码中设置客户端的东西。 这是我已经得到的…有没有人有任何想法我需要做什么才能使这个工作? 我真的很感激。 这是我到目前为止的代码: String baseAddress = “http://localhost/CommService”; WSDualHttpBinding binding = new WSDualHttpBinding(); binding.Name = “WSDualHttpBinding_ICommService”; binding.ClientBaseAddress = new Uri(baseAddress); binding.ReliableSession.Ordered = true; binding.ReliableSession.InactivityTimeout = new TimeSpan(0, 10, 0); binding.ReceiveTimeout = new TimeSpan(0, 10, 0); binding.SendTimeout = new TimeSpan(0, 0, 5); InstanceContext context = new InstanceContext(this); client = new CommServiceClient(context, “WSDualHttpBinding_ICommService”); client.Endpoint.Binding = binding; […]