Tag: #wcf

在单个HTTPWebRequest中上载多个文件

我创建了一个接受两件事的服务: 1)称为“类型”的身体参数。 2)要上传的csv文件。 我在服务器端读这两样东西是这样的: //Read body params string type = HttpContext.Current.Request.Form[“type”]; //read uploaded csv file Stream csvStream = HttpContext.Current.Request.Files[0].InputStream; 我怎么能测试这个,我用Fiddler来测试这个,但我一次只能发送一件事(无论是类型还是文件),因为两者都是不同的内容类型,我如何使用内容类型multipart / form-data和application / x-www-form-urlencoded同时进行。 即使我使用此代码 public static void PostDataCSV() { //open the sample csv file byte[] fileToSend = File.ReadAllBytes(@”C:\SampleData.csv”); string url = “http://localhost/upload.xml”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = “POST”; request.ContentType = “multipart/form-data”; request.ContentLength = […]

Web服务请求身份validation

我们真的被困在这里,所以我决定请你帮忙。 昨天我被要求帮助使用Web服务,获取WSDL的URL以及要使用的用户凭据。 我从来没有真正与网络服务有任何关系,但对他们有一个大致的想法,并看到一些例子,我认为它不会那么糟糕。 显然我错了,因为我现在被困住了。 一切似乎都很好,代理类(或客户端)已生成,构建请求并发送它们也很好,除了身份validation部分。 我们似乎无法弄明白该怎么做。 使用: client.ChannelFactory.Credentials.UserName.UserName = “myusername”; client.ChannelFactory.Credentials.UserName.Password = “mypassword”; 似乎没有用。 (当我检查由client.Endpoint.Binding.CreateBindingElements()返回的BindingElementCollection时,没有SecurityBindingElement) 我已经尝试了很多其他方法,但我认为我缺少一些基本的东西,缺乏文档也没有真正帮助。 所以问题是:如何使用WCF调用Web服务时发送用户名和密码? 编辑:只是为了澄清,请求应包含类似于此的内容: username 1DiaGTkOLk/CZhDaEpbkAaKRfGw= 6ApOnLn5Aq9KSH46pzzcZA== 2009-05-13T18:59:23.309Z

使用net tcp的WCF双工服务:“需要流安全性……”

我正在编写一项服务,允许用户注册并在事件发生时接收通知。 我正在尝试使用netTcpBinding执行此操作,但即使在本地计算机上运行时也会遇到错误。 当我尝试发送通知时,我超时,收到此错误: http://www.w3.org/2005/08/addressing/anonymous需要Stream Security,但没有协商安全上下文。 这可能是由远程端点从其绑定中丢失StreamSecurityBindingElement引起的。 为了测试我在一个控制台中托管服务,它正在为我打开,我可以看到WSDL并在其上运行svcutil。 当我运行客户端时,尝试发送通知是在上面的错误出现时。 主机App.config: 这是客户端App.config: 我省略了很多注册码,因为我现在只是想让通知正常工作。 计划是在2003 Server中的Windows服务中托管它,该服务不属于客户的域(他们的设置),客户端计算机将位于客户的域中。 编辑: 我已将绑定添加到主机的App.config: 这仍然是错误,具有相同的Steam Security是必需的错误消息。 在新解决方案中尝试此应用的一小部分。

WCF – 错误:无法获取元数据

当我尝试从WCF测试客户端运行我的应用程序时,我收到以下错误: 错误:无法从http:// localhost:53867 / MyAPI.svc获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。 有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档.WS-元数据交换错误 URI: http:// localhost:53867 / MyAPI.svc 元数据包含无法解析的引用:’http:// localhost:53867 / MyAPI.svc’。 内容类型application / soap + xml; 服务http:// localhost:53867 / MyAPI.svc不支持charset = utf-8。 客户端和服务绑定可能不匹配。 远程服务器返回错误:(415)不支持的媒体类型.HTTP GET错误 URI: http:// localhost:53867 / MyAPI.svc HTML文档不包含Web服务发现信息。 这是我的一些web.config: 我不知道是什么原因引起的? 我的成员资格提供程序位于该位置,并且具有正确的命名空间。

WCF客户端代理初始化

我正在使用WCF服务并使用VS 2008服务引用创建其代理。 我正在寻找调用WCF服务方法的最佳模式 我应该在每次调用服务方法时创建客户端代理实例,并在完成后立即关闭客户端吗? 当我分析我的客户端应用程序时,我可以看到在初始化代理客户端时需要花费大量时间来获取Channel 我应该为客户端代理使用Singleton模式,以便我可以使用唯一的一次实例并摆脱重新初始化的开销吗? 这种方法有什么隐藏的问题吗? 我使用.Net framework 3.5 SP1,basicHttp绑定很少定制。

WCF – 发布JSON对象

我正在尝试将JSON POST到WCF服务。 json对象包含一个数组。 我想知道如何正确绑定到我的数据合同。 如果有人能给我一个指针,我会非常感激。 目前我的购物车对象为空 这就是我的服务界面: public interface IService { [OperationContract] [WebInvoke(UriTemplate = “/cart”, Method = “POST”, BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] Ship GetShipInfo( Cart cart, string Website); } [DataContract] public class Cart { [DataMember] public Int32 ProductID { get; set;} [DataMember] public decimal ItemPrice { get; set; } [DataMember] public […]

为RESTful WCF配置SSL绑定。 怎么样?

我当前的配置如下: 当我为我的网站配置了http 和 https绑定时,这种方法有效。 我通过https连接到服务,一切都很好。 现在我想完全删除IIS上的http绑定。 我开始得到这样的错误: 找不到与绑定WebHttpBinding的端点的方案http匹配的基址。 注册的基地址方案是[https]。 [InvalidOperationException:找不到与绑定WebHttpBinding的端点的scheme http匹配的基址。 注册的基地址方案是[https]。] System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri,Binding binding,UriSchemeKeyedCollection baseAddresses)+16582113 System.ServiceModel.Description.ConfigLoader.ConfigureEndpointAddress(ServiceEndpointElement serviceEndpointElement,ServiceHostBase host,ServiceEndpoint endpoint)+117 System.ServiceModel.Description.ConfigLoader.ConfigureEndpoint(StandardEndpointElement standardEndpointElement,ServiceEndpointElement serviceEndpointElement,ContextInformation context,ServiceHostBase host,ServiceDescription description,ServiceEndpoint&endpoint,Boolean omitSettingEndpointAddress)+937 System.ServiceModel.Description.ConfigLoader.LookupEndpoint(ServiceEndpointElement serviceEndpointElement,ContextInformation context,ServiceHostBase host,ServiceDescription description,Boolean omitSettingEndpointAddress)+8728167 System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints(ServiceHost host,IDictionary`2 implementedContracts,String multipleContractsErrorMessage,String standardEndpointKind)+982 System.ServiceModel.Web.WebServiceHost.OnOpening()+311 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)+612 System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath)+255 System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)+1172 [ServiceActivationException:由于编译期间发生exception,无法激活服务’/ DEMO / mobile’。 exception消息是:找不到与绑定WebHttpBinding的端点的scheme http匹配的基址。 注册的基地址方案是[https] ..] System.Runtime.AsyncResult.End(IAsyncResult result)+901424 […]

使ASP.NET Identity 2.0电子邮件确认令牌适用于WCF和MVC

我有一个服务项目(WCF)和MVC项目,它使用相同的数据库来处理移动和接口部分的服务部分。 我必须在两者上设置电子邮件确认。 我使用OWIN ASP.NET 2.0库进行身份validation,两个项目都有单独的UserManagers。 对于MVC public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) { var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { manager.UserTokenProvider = new DataProtectorTokenProviderdataProtectionProvider.Create(“ASP.NET”)); } } 对于WCF var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider(“ASP.NET”); UserManager.UserTokenProvider =new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider( provider.Create(“EmailConfirm”)); var code = idManager.UserManager.GenerateEmailConfirmationToken(appuser.Id); 问题在MVC中生成的电子邮件确认令牌工作正常。 在WCF中,当我创建电子邮件确认令牌时,需要从MVC网站进行validation。 在这里,它给了我“无效令牌”。 我认为这是由于令牌代码不匹配,我试图让它们尽可能相同,但我不知道哪一个在Wcf和MVC之间。 顺便说一句。 我在Visual Studio上测试localhost。

为什么我的WSDL仍然显示基本的http绑定与http的位置值?

我启用了https绑定,但我的WSDL的肥皂地址为http。 有什么想法吗? 谢谢! 这是我的web.config文件:

使用WCF的IQueryable问题

我有一个非常简单的WCF服务方法,它返回一个IQueryable,仅用于测试。 也许我在试图了解IQueryable的设计时遇到了什么问题。 我明确计划稍后将其与NHibernate的IQueryable提供程序一起使用。 但是,每当使用返回IQueryable的WCF方法时,我首先遇到某种序列化问题(至少我认为这可能是问题)。 它甚至不适用于简单的字符串。 这是我的代码: public IQueryable GetEquipmentConfigurations() { var returnValue = new List(); returnValue.Add(“test”); return returnValue.AsQueryable(); } 它可能没什么意义,只是为了测试我是否真的使用WCF通过线路获得那些IQueryables。 每当我使用类似SoapUI的客户端调用此方法时,我会收到套接字exception和连接重置,就像我尝试返回未标记为DataContract的内容一样。 但我在这里唯一要做的就是尝试返回一些糟糕的字符串列表。 这有什么问题? 我使用basicHTTPBinding,这是我的设置: 为接口设置OperationContract属性: [OperationContract] IQueryable GetEquipmentConfigurations(); 只返回一个简单的字符串就可以了。 无论如何,我想稍后使用LINQ从IQueryablefunction中获利。 有谁知道这里出了什么问题? 谢谢和干杯, 斯特凡