Tag: #wcf

如何在android中获取wcf服务的自定义消息头

我正在使用这个 – >> link << – 在wcf中设置自定义消息头的所有代码,但是我无法在android中获取这些头信息。 如果有人在Android中有任何经验。 如何在android中获取这些类型的自定义消息头值。 喜欢C#中的这段代码 public class SimpleCustomHeaderService : ISimpleCustomHeaderService { public string DoWork() { //Do Work //… //Capture Headers var userName = GetHeader(“web-user”, “ns”); var webNodeId = GetHeader(“web-node-id”, “ns”); var webSessionId = GetHeader(“web-session-id”, “ns”); Debug.WriteLine(“User: {0} / Node: {1} / Session: {2}”, userName, webNodeId, webSessionId); var s = string.Format(“HeaderInfo: […]

用C#异步调用WCF?

在C#中,如何对WCF Web服务进行异步调用? 我有一个服务参考设置来生成异步。 我还修改了我使用{WebServiceObject.Begin *()}的调用,但最后有两个参数,’AsyncCallback’和’object asyncState’。 这些是什么以及如何使用它们? 谢谢,

在WCF上抛出exception的正确方法

我试图以最通用的方式在WCF上发送exception。 这是我得到的: [ServiceContract] interface IContract { [OperationContract] void Foo(); } class ContractImplementation: IContract { public void Foo() { try { Bar(); } catch (Exception ex) { throw new FaultException(ex, ex.Message); } } } 实际上来自Bar的例外是: [Serializable] class MyException : Exception { // serialization constructors } 我在服务器端WCF日志记录中看到的错误是: 键入“MyException”,数据协定名称为“MyException: http : //schemas.datacontract.org/2004/07/MyException ”。 考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 – 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。 到目前为止我尝试了什么: [ServiceKnownType(typeof(MyException))] […]

如何将C#WCF DataContract序列化/反序列化到XML或从XML序列化

我正在开发一个WCF服务,它将由多个不同的客户端应用程序使用。 为了使一个function起作用,服务器需要将XML文件读入C#DataContract,然后将其传递给相关客户端。 据我所知,从MSDN网站,这是可能的,但我找不到任何完整的例子。 特别是,该网站谈到了一个“流”参数,我还没有完成。 我的数据协定有一个属性字段,它是另一个具有多个简单属性字段的数据协定的列表。 例如 [DataContract] public class MyClass1 { [DataMember] public string name; [DataMember] public int age; } [DataContract] public class MyClass2 { [DataMember] public List myClass1List; } 我的课看起来像这样。

什么可能导致WCF中的“无法访问已处置的对象”错误?

我使用以下代码: private WSHttpBinding ws; private EndpointAddress Srv_Login_EndPoint; private ChannelFactory Srv_LoginChannelFactory; private Srv_Login.Srv_ILogin LoginService; Login是我的构造函数: public Login() { InitializeComponent(); ws = new WSHttpBinding(); Srv_Login_EndPoint = new EndpointAddress(“http://localhost:2687/Srv_Login.svc”); Srv_LoginChannelFactory = new ChannelFactory(ws, Srv_Login_EndPoint); } 我正在以这种方式使用服务: private void btnEnter_Click(object sender, EventArgs e) { try { LoginService = Srv_LoginChannelFactory.CreateChannel(); Srv_Login.LoginResult res = new Srv_Login.LoginResult(); res = LoginService.IsAuthenticated(txtUserName.Text.Trim(), txtPassword.Text.Trim()); if […]

AppDomain.CurrentDomain.UnhandledException未被调用

我有一个WCF服务,在Global.asax中有以下代码: protected void Application_Start(object sender, EventArgs e) { // Make sure that any exceptions that we don’t handle at least get logged. AppDomain.CurrentDomain.UnhandledException += LogUnhandledException; } private void LogUnhandledException(object sender, UnhandledExceptionEventArgs e) { Log.Error.LogException(“UnhandledException”, e.ExceptionObject as Exception); } 我们的想法是至少记录所有未公开的exception。 但它似乎从未被称为。 我尝试在我的一个服务操作中执行Divide by Zero,它只是在遇到exception后停止服务。 int zero = 0; int result = 100 / zero; 永远不会调用LogUnhandledException方法。 我在IIS中运行并在调试器中运行。 […]

为什么我的wcf客户端的操作合同不能将接口作为参数?

我有一个简单的wcf服务契约,如果我使用接口的具体实现,它可以正常工作,但如果我想使用参数中的接口而不是具体的类,它会给我错误,我将在下面显示。 这是代码: [ServiceContract] public interface IClientUserRegistration { [OperationContract] void RegisterClientUser(ClientUser clientUser); [OperationContract] List GetUsers(); } 如果我用IClientUser替换ClientUser,WCF测试客户端会说不支持RegisterClientUser操作,因为它使用System.Object类型。 如果我用List替换GetUsers的返回值,它表示不支持此操作,因为它使用类型System.Object []。 为什么会出现这些错误? 我之所以尝试使用IClientUser,是因为我可以实现实现IClientUser接口的不同用户类型并将它们传递给RegisterClient,但如果我只能传递ClientUser,那么我必须创建一堆RegisterClient覆盖,不同类型的用户。

在WCF服务中公开webHttpBinding端点

我创建了一个WCF服务并公开了三个端点,即basicHttpBinding,wsHttpBinding和webHttpBinding。 这是我使用WCF进行实验的测试服务。 但是,每当我使用.svc文件添加服务引用时,我只获得两个(基本和ws)端点。 由于某种原因,似乎没有第三个(webHttpBidning)端点被暴露。 要重现此问题,请创建WCF应用程序项目,删除Service1服务,添加新项目>名为TestService的WCF服务,并将配置文件更改为以下内容: 以下是ITestService.cs的代码: [ServiceContract] public interface ITestService { [OperationContract] [WebInvoke] Boolean ValidateUser(User user); } [DataContract] public class User { [DataMember(Name = “Name”)] public String UserName { get; set; } [DataMember] public String Password { get; set; } } 并为TestService.svc public class TestService : ITestService { public bool ValidateUser(User user) { if (user.UserName […]

在C#中以编程方式创建WCF客户端的标头(wsse)部分

如何以编程方式在app #config中创建app.config服务设置的以下部分: someusername somepassword 我设法从c#生成绑定部分(上面没有包含)和端点部分。 我无法创建标题部分。 出现的错误是:(这是因为当我从c#生成所有内容时,我没有标题部分) 此服务需要 ,缺少该服务。 header部分很重要,好像我从配置中排除它并使用config运行代码它也会产生上述错误。 我不想使用web.config / app.config。 我必须从C#运行所有东西。 (上面的app.config工作正常,但我想通过c#做同样的事情) 注意:以下更新是基于以下提供的解决方案请通过以下解决方案的评论,以获得更好的理解 更新1 :(首先以编程方式使用BasicHttpBinding) BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = “Contact”; binding.CloseTimeout = TimeSpan.FromMinutes(1); binding.OpenTimeout = TimeSpan.FromMinutes(1); binding.ReceiveTimeout = TimeSpan.FromMinutes(10); binding.SendTimeout = TimeSpan.FromMinutes(1); binding.AllowCookies = false; binding.BypassProxyOnLocal = false; binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; binding.MaxBufferSize = 524288; binding.MaxBufferPoolSize = 524288; binding.MaxReceivedMessageSize = […]

在Azure WebRole上自动启动WCF

我在Azure(WebRole)上托管了一个WCF。 WCF做了很多后台任务并回复了一些请愿。 问题是如果WCF长时间没有收到任何请求(10小时或更长时间),应用程序池将在azure实例上回收,并且WCF任务将停止。 我做了一些调查,我可以启用一个AutoStartfunction来触摸machine.config,但这不是一个azure deploy的选项。 我可以在web.config中启用AutoStart或部署配置文件吗?