Tag: #wcf

WCF FaultException

在构建WCF服务时,如果我没有在服务中包含我的FaultException合同,我可以在客户端上创建一个WCF服务引用,其中包含Reference.cs文件中包含的所有成员。 如果我包含我的FaultException合同,会发生两件事。 在WCF测试客户端中,合同名称旁边有一个红色的“X” (CreateFaultMessage) 当我创建WCF服务引用时, 并非所有成员都包含在Reference.cs文件中。 因为我不是WCF专家,所以我希望有人能够告诉我在创建FaultException合同时我做错了什么。 下面是我在合同中的代码声明。 [OperationContract] [FaultContractAttribute(typeof(LogEventArgs), ProtectionLevel = ProtectionLevel.None)] Exception CreateFaultMessage(Exception ex, string method); 下面是实现接口的类中的方法。 注意在PostTransmissionRecord方法的catch块中调用CreateFaultMessage方法。 public bool PostTransmissionRecord(TransmissionRecord transmissionRecord) { bool blnUpdated = false; try { blnUpdated = TransmissionRecordGateway.InsertData(transmissionRecord); LogMessage.WriteEventLog(“Transmission records updated successfully”, “Ryder.ShopProcessService.SOA”, 3, null); return blnUpdated; } catch (Exception ex) { LogMessage.WriteEventLog(“Class: ShopProcessService” + CrLf + “Method: PostTransmissionRecord” […]

WCF服务应用程序 – 使用C ++对象调用导致Visual Basic 6.0 DLL文件挂起

我们目前正在移动系统以使用WCF并遇到了一个我们无法弄清楚的问题。 设置是有一个C#DLL文件包装C ++和Visual Basic 6.0 DLL文件。 C#DLL文件具有这两者的包装器,并实例化这两个对象。 初始化C ++对象(从文件中抓取数据),然后将其传递给Visual Basic 6.0对象,该对象使用C ++对象中的数据运行报表。 这一切都是作为WCF服务应用程序发生的,并且在大多数情况下它工作得很好,但是当Visual Basic 6.0代码调用C ++对象中的方法时,整个事情就会挂起。 我只使用一个调用相同C#DLL文件(在WCF之外)的简单应用程序进行测试,并且它可以完美地工作。 因此,WCF和C ++ DLL文件有一些问题,但我们无法弄清楚是什么。 我已经将Visual Basic 6.0 DLL文件更改为使用Run Unattended和Store in Memory (以便能够使用它),但这似乎并不重要。 有没有人有这方面的经验,或者有任何想法为什么会挂? 我的想法是WCF服务以某种方式锁定DLL文件,这就是为什么当Visual Basic 6.0 DLL文件使用它时,它无法访问它,导致它死锁。 C ++ Wrapper public interface ISummaryWrapper { void LoadInfo(Application info); SummaryApp GetSummary(); } public class SummaryWrapper : ISummaryWrapper { private SummaryApp _summary; […]

WCF服务不是multithreading的

我正在设计WPF应用程序使用的WCF服务。 该服务将由50个客户端使用并托管在多核服务器上。 这就是为什么我希望它是multithreading的。 这就是我宣布它的方式: [ServiceContract( SessionMode = SessionMode.Required, Namespace = Constants.NameSpace, CallbackContract = typeof (ISaphirServiceCallback))] public interface ISaphirService [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode=InstanceContextMode.PerSession)] public partial class SaphirService : ISaphirService 和服务器端配置: 这是客户端配置: 问题是,每个请求都在同一个线程上处理。 我在互联网上查了很多但是一切对我来说都很好…… 你们有什么想法吗? 谢谢 !

在解决方案中发现WCF服务

我有一个WCF服务的解决方案,工作正常。 我在解决方案中添加了一个小型控制台应用程序,需要在同一解决方案中为服务提供服务引用。 它发现服务但显然无法连接到它,因为服务没有运行。 在Visual Studio 2010中我如何在解决方案中运行服务,同时在同一解决方案中添加服务引用?

如何测试网管服务是否正在监听

如何以编程方式测试以查看特定的网络管道服务是否正在运行和监听,因此我没有得到“没有端点监听……”exception? 所以,例如,如果我有这个代码: Uri baseAddress = new Uri(“http://localhost/something”); var _ServiceHost = new ServiceHost(typeof(Automation), new Uri[] { baseAddress }); NetNamedPipeBinding nnpb = new NetNamedPipeBinding(); _ServiceHost.AddServiceEndpoint(typeof(IAutomation), nnpb, “ImListening”); _ServiceHost.Open(); 我希望从另一个应用程序与http://localhost/something/ImListening通信,但在我想确保正在监听之前我没有得到exception,或者是测试这个的唯一方法的exception?

WCF服务双重冒充?

我的设置有点复杂,所以让我先说一下。 我们有一个WCF Web服务,它通过几个不同的API从各种来源获取数据,并将该数据返回给客户端。 请求的安全性是通过HTTPS完成的(工作)IIS标准是必须将应用程序池设置为使用基本的IIS网络服务帐户,并且应该使用.net模拟。 我的问题是Web服务应始终在AD进程ID下运行,无论谁调用它,但它还应检查调用者所在的AD组以确定可访问的function。 现在我可以设置我的web.config使用和这种工作使它总是作为Blah运行,但后来我不知道如何模仿/检查调用用户,看看他们也有访问的function。 **编辑:忘了提到调用客户端应该能够传递UN / PASS而不仅仅是它的Windows令牌。 wcf服务应该validation其有效的AD UN和PASS以及轮询它所在的组。

动态IL方法导致“操作可能破坏运行时的稳定性”

System.Security.VerificationException:操作可能会破坏运行时的稳定性。 在Connance.CommunicatorApi.ReportApiClient.AcknowledgeRecallsAsyncDynamicHandler(Object,AcknowledgeRecallsCompletedEventArgs) 那是我得到的错误。 我正在尝试做的(背景)是为一类方法创建一个全局事件处理程序。 我正在使用WCF中的静态代理,我需要创建一个跟踪所有调用并返回所有WCF Web方法的层。 不幸的是,WCF强烈地键入了“已完成”事件的EventArgs,几乎不可能。 我决定尝试一下。 如果事件是EventHandler ,我仍然可以注册签名void Method(object, object)来处理事件。 大。 所以我开始创建一个DynamicMethod ,它将调用我的全局处理程序,并将其注册到每个事件。 我试过两种方法: 1)DynamicMethod的类型为void(对象,对象) 2)类型为void(object,SomeSpecificEventArgs) – 我使用generics方法来获取类型。 只有当我尝试手动或为事件调用方法时,我才得到上述exception。 这是我的代码: // The handler for all callbacks. // in the example it does nothing. public void Handler(object sender, object e) { dynamic evtArgs = e; object userState = evtArgs.UserState; } private string GetIdentifier(Delegate d) […]

检测wcf服务是否已激活

我正在制作WP8应用程序。 我注意到,如果服务器工作一切正常,但如果服务器关闭,我会得到一个例外。 如果在使用他的方法之前激活wcf服务,我如何检查代码?

如何使用Castle Windsor将对象注入到WCF IErrorHandler实现中?

我正在使用WCF开发一组服务。 该应用程序正在使用Castle Windsor进行dependency injection。 我添加了一个通过属性添加到服务的IErrorHandler实现。 到目前为止一切都在发挥作用。 IErrorHandler对象(名为FaultHandler的类)正在被正确应用并被调用。 现在我正在添加日志记录。 Castle Windsor设置为注入记录器对象( IOurLogger一个实例)。 这很有效。 但是当我尝试将它添加到FaultHandler我的记录器为空。 FaultHandler的代码如下所示: class FaultHandler : IErrorHandler { public IOurLogger logger { get; set; } public bool HandleError(Exception error) { logger.Write(“Exception type {0}. Message: {1}”, error.GetType(), error.Message); // Let WCF handle things its way. We only want to log. return false; } public void […]

C#WCF客户端XP上的内存泄漏

我有个问题。 我编写了一个使用wsHttpBinding的wcf客户端(WPF和c#)。 我正在使用双工。 我有一个函数,我每分钟调用一次名为KeepConnection的wcf服务。 我永远不会关闭客户端代理,因为我需要让客户端“在线”始终进行服务回调。 但是当在Windows XP上运行这个客户端时,我的应用程序的内存有一个奇怪的问题。当在win 7 / vista上正常运行时,应用程序在taskmanger中只使用40mb的内存。 在Xp中每秒不断增加内存的使用。 我在2天内超过700mb。 有没有办法解决这个问题或与XP有关。 感谢帮助。 服务代码: /// /// Just an empty method for client to keep the connection alive with the service. /// public void KeepConnection() { _logger.Debug(“Keep alive requested.”); } 我的客户代码。 private InstanceContext instanceContext; //Wcf instance context for callbacks. public static BootDialog _bootScreen = new […]