Tag: #wcf

从Android KSoap2开始在Mono上运行WCF Soap Service

我正在开发一个Android / C#项目。 我需要做的是有一个WCF soap服务,可以在Windows或Linux(Mono)上运行。 它在Windows上工作正常,我可以从Visual Studio中提供的WCF测试客户端访问Mono上的WCF服务,它工作正常但是当使用KSOAP2访问android时,我收到错误HTTP Request Failed, HTTP status: 415 以下是soap服务的启动方式 string methodInfo = classDetails + MethodInfo.GetCurrentMethod().Name; try { if (Environment.GetEnvironmentVariable(“MONO_STRICT_MS_COMPLIANT”) != “yes”) { Environment.SetEnvironmentVariable(“MONO_STRICT_MS_COMPLIANT”, “yes”); } if (String.IsNullOrEmpty(soapServerUrl)) { string message = “Not starting Soap Server: URL or Port number is not set in config file”; library.logging(methodInfo, message); library.setAlarm(message, CommonTasks.AlarmStatus.Medium, methodInfo); return; […]

在客户端和服务中应用异步等待之间的区别

我已经创建了一个WCF服务,并且它的操作包含和实现如下: [OperationContract] Task GetName(string name); public async Task GetName(string name) { await Task.Delay(5000); var task1 = Task.Factory.StartNew(() => { return “Your name is : ” + name; }); var result = await task1; return result; } 现在我在客户端使用此服务并创建了客户端。 ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); 它显示了我的实现的两种方法:GetName和GetNameAsync 我可以使用以下两种方式来访问该服务。 var result_GetName = await Task.Factory.StartNew(() => client.GetName(“My Input”)); var result_GetNameAsync = […]

从DTO创建BO的模式/策略

我喜欢使用属性包对象(DTO)定义我的服务器接口的方法,但我不喜欢这样编写代码: void ModifyDataSomeWay(WibbleDTO wibbleDTO) { WibbleBOWithMethods wibbleBO = new WibbleBOWithMethods(); wibbleBO.Val1 = wibbleDTO.Val1; wibbleBO.Val2 = wibbleDTO.Val2; } 这种复制代码很难编写。 如果复制代码是不可避免的,那么你把它放在哪里? 在BO? 在工厂? 如果可以手动避免写锅炉板代码那么如何? 提前致谢。

WCF messageheader与messagebodymember?

我不明白何时应该放[MessageHeader]而不是[MessageBodyMember]? 我已经读过它已经习惯了像Soap这样的协议,但是,它到底有什么变化?

在不使用WCF中的CallBack的情况下将数据推送到客户端

是否可以在不使用回调的情况下将数据推送到WCF服务中的客户端? 场景: 有2个客户端消费服务。 客户端1发送消息,然后客户端2获取客户端1发送的消息。

WCF:OperationContext.IncomingMessageProperties.Via返回错误的URI

我在IIS中托管WCF服务。 我在IIS中为站点设置了多个主机名绑定。 但是,在向任何非默认绑定发出请求时,OperationContext.IncomingMessageProperties.Via属性不会报告正确的URL。 报告的URL使用默认绑定的主机名作为基础,具有相同的路径和查询字符串。 例如,假设以下绑定: http://subfoo.services.myapp.com (first/default entry) http://subbar.services.myapp.com 在向http://subbar.services.myapp.com/someservice?id=123提出请求时 Via属性将请求URI报告为: http://subfoo.services.myapp.com/someservice?id=123 : http://subfoo.services.myapp.com/someservice?id=123 id = http://subfoo.services.myapp.com/someservice?id=123 如何获取具有所请求的实际主机名的URL?

WCF服务和对象构造函数

我只是在学习WCF服务。 我有一个方法返回我创建的名为GPSPosition的对象。 GPS位置对象具有纬度和经度。 没有这些属性,对象永远不应该存在。所以,我想让构造函数接受Lat和Long浮点数。 因此,在创建对象时,将设置值,并且永远不会无效(Unset)。 但是,它是我的WCF服务的一个对象。 可以作为我的调用应用程序使用的WCF服务对象有一个构造函数吗? 如果我var position = new GpsPosition{ lat=1, lon=1 }; 在我的调用代码中,构造函数是否可以工作? 你能在WCF类中拥有构造函数吗? 我认为它们是在不同语言之间共享的 – 例如,如果Java使用该服务,我不确定构造函数将如何触发。 对象结构与调用应用程序共享,不是吗? 你可以在构造函数中触发.net代码(对于那种情况,还有getter和setter方法)? 如果构造函数不可用 – 有没有办法确保我的对象永远无效? (必须在-180和+180之间有有效的纬度/经度值)?

删除WCF服务答案的大小限制

我创建了一个WCF服务,它在W2008-Server上运行一个操作并返回一个数据结构。 问题是,这个结果可能比标准服务配置似乎更接受。 所以我试图增加(或删除)这个最大尺寸,但似乎,我没有找到正确的属性。 在WCF的App.config中,我更改了basicHttpBinding的以下值: MaxBufferPoolSize – > 6553600 MaxBufferSize – > 6553600 MaxReceiveMessageSize – > 6553600 ReaderQuotas: MaxArrayLenght – > 0 MaxBytesPerRead – > 0 MaxDepth – > 0 MaxNameTableCharCount – > 0 MaxStringContentLength – > 0 然后我启动WCF-Testclient来调用该服务。 我确保basicHttpBinding的属性值等于配置中的值。 当我以某种方式调用服务时,结果集相当小,一切正常。 但是当这个尺寸增加时,我最终会得到错误(翻译自德语): 接收http :// localhost:8731 / Design_Time_Addresses / DiscoDataSource / Service1 /的 http应答时出错。 可能的原因:Endpointbinding不使用HTTP协议,或者服务器取消了HTTP-requestcontext。 服务器堆栈跟踪: 在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException […]

来自MVC App的WCF服务身份validation共享相同的成员资格提供者

我在X域上有一个MVC应用程序,在Y域中有一个WCF服务,我想为它们使用相同的成员资格提供程序。 WCF服务位于Y域中,因为数据位于Intranet服务器中,而MVC应用程序位于X域中,因为我不想处理生成数据的服务器上的所有请求。 我希望用户登录到MVC应用程序,并通过这样做也对WCF服务进行身份validation。 如果我在MVC应用程序中进行身份validation(我不确定如何完成),我可以为这两件事创建cookie,我不知道哪种方法最好。 我不希望任何未经过身份validation的人都能使用我的WCF服务。 所以我认为我需要的是AuthenticationService来validation用户,然后将相同的用户名和密码传递给我的自定义WCF服务,以便能够与之交互。 问题是我使用AuthenticationServicevalidation我的用户名并创建一个cookie( http://msdn.microsoft.com/en-us/library/bb515342.aspx )但是当我与我的自定义WCF服务(数据)交互时,我需要再次提供用户名和密码( http://msdn.microsoft.com/en-us/library/ff647294.aspx ),我对用户名没有问题,但密码我不知道如何管理它我不喜欢我不想每次都要求密码。 有更轻松的事吗?

WCF:StackoverFlowexception

我在尝试servageize .NET ServiceController类时遇到exception。 当它为null时序列化很好但是一旦我填充它我得到一个stackoverflowexception。 这样可行: [DataMember] public ServiceController MyServiceController { get { return null; } } 但是这会给出错误“System.ServiceProcess.dll中发生类型’System.StackOverflowException’的未处理exception”: public class TestClass { private ServiceController _serviceController; [DataMember] public ServiceController MyServiceController { get { return ServiceController.GetServices()[0]; } } 奇怪的是,日志中根本没有错误。 当出现错误时我可以在日志中看到它,所以不是因为我的日志不能正常工作。 这是我的配置文件 这是我的服务界面 [ServiceContract] public interface IRdbmsService { [OperationContract] TestClass GetServiceControllerList(); } 实施是: public TestClass GetServiceControllerList() { return new […]