Tag: web services

以编程方式在.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(); […]

测试表仅适用于本地计算机的请求

为什么对于我的一些Web服务,我得到测试表单,所以我可以看到生成的xml数据,但对于其他Web服务,我收到一条消息说The test form is only available for requests from the local machine. ? 两次,我从客户端浏览器连接到Web服务的URL,所有Web服务都是使用C#,.NET-3.5创建的。

如何处理实现多个接口的对象的Dtos?

我们在WCF服务接口中使用Dtos,但是当Dto表示的业务对象实现多个接口并且我们想要在这些不同的上下文中返回Dtos并且还能够处理时,它们已经开始遇到问题Dtos在客户端上进行多态化。 例如,假设我们有一个IBusinessObject的接口, IBusinessObject包含几个属性,包含对象关系,对象属性等的详细信息。我有几个实现,这个实现是一个实现IBusinessObject和ILinear 。 还有ILinear其他实现,它们也不是业务对象,只是简单的线性事物。 我们的服务有一个获取业务对象的方法。 这将返回一个基础Dto类( BusinessObjectDto ),它声明IBusinessObject的常见部分(关系属性等)和LinearBusinessObjectDto ,它扩展了BusinessObjectDto并添加了关于事物线性方面的额外信息。 这很好,并使客户端能够以一定程度的多态性处理返回的BusinessObjects 。 我们还想要一种获得线性事物的方法。 这将返回一个基类LinearDto ,其中包含常见的线性详细信息。 简单的线性对象实现扩展了LinearDto ,一切都很好。 但是现在我有一个问题,因为我不能让我的LinearBusinessObjectDto从LinearDto和BusinessObjectDto扩展,因为只支持单inheritance,并且我不能使用接口,因为WCF不知道什么类型然后放入服务WDSL中的合同定义。 所以我开始为我的LinearBusinessObject 2个dtos,一个派生自BusinessObjectDto ( LinearBusinessObjectAsBusinessObjectDto ),另一个派生自LinearDto( LinearBusinessObjectAsLinearDto ),然后根据我感兴趣的界面转换每个LinearBusinessObjectAsLinearDto 。 这似乎会导致许多额外的Dto类(其中我已经有很多),所以我想知道是否有比这更好的解决方案? 或者这只是我们必须忍受的东西?

第一次调用.net webservice很慢

我在我的.net winforms应用程序中调用.net webservice,两者都在框架4.0中。 在程序执行期间,webservice第一次调用方法时,调用大约需要10-12秒。 后续通话需要约1-2秒。 即使重新创建Web引用实例,后续调用仍然是〜1-2秒。 当winforms应用程序重新启动时,第一次呼叫延迟再次发生,但后续呼叫响应。 Web调用的实例是在调用发生之前创建的,并不是延迟的一部分。 正在生成winforms应用程序的XmlSerializers(并据我所知使用,但我不知道如何validation这一点)。 由于Web服务端的首次编译,因此不会发生延迟。 这是一整天都在使用的生产Web服务,其apppool仍保留在内存中。 据我所见,延迟发生在客户端,或者客户端和服务器之间的第一次调用,而不是后续调用。 不知道接下来要检查什么。 有任何想法吗?

使用具有WSDL和XSD文件的Web服务

我们已经要求一家公司编写一个我们可以用来获取一些信息的网络服务。他们向我们发送了WSDL和XSD文件。 你能告诉我如何使用这些文件来查询数据吗? 如果我有一个web服务的链接,我可以轻松地做到这一点。 我只提供链接,Visual Studio为我生成Web引用。 之后,我可以像普通类一样使用该引用。 在这种情况下,我没有链接。 上面提到的文件。 谢谢。

如何为Web服务生成XSD文件

我需要创建将由其他系统使用的Web服务(.NET)。 为了让他们实现将使用我的Web服务的逻辑,我需要为他的Web服务发送wsdl和XSD文件。 WSDL文件不是问题,我将通过传递wsdl参数从.asmx页面获取它。 但是,如何为我的Web服务生成适当的XSD文件? 我可以使用XSD.exe工具并将其.wsdl文件作为参数传递,还是有其他方法? 提前致谢。

Service Reference使用Arrays而不是List ,即使设置说使用List也是如此

我正在使用Visual Studio 2010,并且我已经获得了对我们创建的Web服务的服务引用。 我们的方法返回包含通用List属性的对象: public class ExampleResponse { private System.Collections.Generic.List intValues; [WCF::MessageBodyMember(Name = “IntValues”)] public System.Collections.Generic.List IntValues { get { return intValues; } set { intValues= value; } } } 在客户端,它使用int []而不是List创建一个References.cs文件: [System.ServiceModel.MessageBodyMemberAttribute(Namespace=”SomeNamespace”, Order=0)] [System.Xml.Serialization.XmlArrayAttribute(IsNullable=true)] [System.Xml.Serialization.XmlArrayItemAttribute(Namespace=”http://schemas.microsoft.com/2003/10/Serialization/Arrays”, IsNullable=false)] public int[] IntValues; 在服务引用设置上,“集合类型”设置为使用“列表”,而不是“arrays”。 然而,它仍在这样做。 任何有关如何解决这个问题的信息都会非常有用,似乎毫无意义。

如何使ServiceStack身份validation工作? (使用iPhone客户端)

我们聘请了一位为我们编写iPhone应用程序的承包商,我开始用ServiceStack为它编写后端服务。 我一般都在努力获得授权:使用何种授权以及如何实施授权。 我对ServiceStack,HTTP和授权(我)了解不多。我读过这篇文章 ,但我可能还是做错了。 我将使用现有遗留数据库中的用户名和密码进行身份validation(但没有别的 – 没有注册新用户,没有不同的权限。只是进行身份validation)。 所以我需要编写自己的提供者。 我已经设法在本教程的帮助下实现了一个有效的CredentialsAuthProvider 。 它在我在浏览器中测试时有效: 致电我的服务并获得401 POST到auth/credentials 再次呼叫我的服务并获得正确的结果 但是,我注意到当我在Fiddler中尝试时,相同的工作流程不起作用。 POST到auth/credentials有效。 我发布这个: POST http://localhost:52690/auth/credentials?format=json HTTP/1.1 User-Agent: Fiddler Host: localhost:52690 Content-Length: 74 Content-Type: application/json; charset=utf-8 { “UserName”: “chspe”, “Password”: “xyz”, “RememberMe”: true } ……得到这个: HTTP/1.1 200 OK Server: ASP.NET Development Server/10.0.0.0 Date: Fri, 14 Jun 2013 13:07:35 GMT X-AspNet-Version: 4.0.30319 X-Powered-By: […]

什么是ASP.NET Webservice请求生命周期?

在常规的aspx页面上,我有一些事件,例如Page_Init , Page_Unload等,它们以明确定义的顺序发生 。 我有一个提供[WebMethod()]的asmx页面。 是否存在类似的事件? 特别是,一些允许我初始化一些数据(如Page_Load )并进行一些清理(如Page_Unload )的事件将非常有用。 (据我所知, asmx代码隐藏类的构造函数似乎在每个WebMethod请求上被调用,即,为每个WebMethod请求创建一个新实例,但这只是一个观察,而不是我所做的事情发现在某处…