Tag: #wcf

支持HTTP和HTTPS Web.Config WCF服务

在尝试同时支持https和https时,我遇到了WCF服务的配置问题。 理想情况下,我想在我的开发机器上运行http,然后发布到运行https的azure。 我按照这些post尝试运行配置: http : //jayakrishnagudla.blogspot.com/2009/12/configuring-wcf-services-to-work-with.html 如何配置单个WCF服务以具有多个HTTP和HTTPS端点? 我的Web.Config如下: 据我所知,根据上面的链接,这个配置应该是正确的。 但是,当我通过http本地构建和运行此服务时,我收到以下错误: Could not find a base address that matches scheme https for the endpoint with binding WebHttpBinding. Registered base address schemes are [http]. 我不太清楚问题出在哪里,并假设它的配置错误。 任何帮助,将不胜感激。

应用程序中的webservice方法上的多个异步调用失败,但exception

我正在尝试创建一个连接到互联网的应用程序,并为每个操作使用web services 。就我而言,我想使用async method ,我已经使用它来获取联系人的集合。我已经意识到,当我为群体做同样的事情(意味着让群体异步)时,我在呼叫中有错误,但是当使用正常呼叫时,我没有。所以我在网上进行了一些研究并发现了很多人有同样的问题。 他们中的一些人被要求使用WCF (我不知道杰克)。我想知道是否还有其他方法可以解决这个问题。 如果没有,有人可以指向我在线的可靠资源,并帮助我度过难关吗? 感谢阅读和帮助这里是我的代码: public partial class main : Window { //… private static vmcSession session; private MyService service = new MyService(); private contactInfo[] loadedcontact; //…. public main() { InitializeComponent(); //service.addContactCompleted +=new addContactCompletedEventHandler(addContactCompleted); service.getContactsCompleted += new getContactsCompletedEventHandler(getContactsCompleted); service.getGroupsCompleted += new getGroupsCompletedEventHandler(getGroupsCompleted); fillContents(); } private void getGroupsCompleted(object sender, getGroupsCompletedEventArgs e) { […]

为Azure webapp上托管的SOAP WCF添加简单的安全性

我在Azure应用程序上托管了一个SOAP WCF。 此服务仅由服务器使用,不包含UI。 我只需要一个服务帐户来授权我的WCF。 我不能使用oauth,因为它是SOAP。 我已经阅读了一些关于ACS的内容,但在我的案例中似乎有些过分,因为我只想使用一个帐户来保护我的WCF。 我的想法是,我将利用Azure AD在那里建立一个服务帐户并使用它来保护服务。 这甚至可以在Web应用程序上使用,还是需要将其托管在Web角色上? 在任何情况下,我如何根据我的前提在我的WCF上实现简单的安全性?

自主WCF服务无法通过WCFTestClient进行测试

我正在尝试使用WCFTestClient测试我自己托管的wcf服务。 我得到一个错误: 错误:无法从http:// localhost:2303 / MyService获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。 有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档.WS- Metadata Exchange错误URI: http:// localhost:2303 / MyService元数据包含参考无法解决:’http:// localhost:2303 / MyService’。 内容类型application / soap + xml; 服务http:// localhost:2303 / MyService不支持charset = utf-8。 客户端和服务绑定可能不匹配。 远程服务器返回错误:(415)无法处理消息,因为内容类型为’application / soap + xml; charset = utf-8’不是预期的类型’text / xml; charset = utf-8′.. HTTP GET错误URI: http:// localhost:2303 / MyService下载’http:// localhost:2303 / MyService’时出错。 请求失败,HTTP状态为400:错误请求。 我的项目结构如下 作为主机的控制台应用程序 服务合约 […]

变换路径/折线对应于地图缩放/移动动作

我正在使用MapLayer和MapOverlay在Map中创建自己的路径/折线,GPS捕获的所有点都存储在一个结构中,以便我可以访问它们。 随时。 现在,我希望路径在用户操纵地图的同时进行变换(缩放和地图重新定位),因此路径仍然连接相同的点。 到目前为止,我的方法非常耗费CPU并且看起来非常糟糕 GeocoordinateList _coordinates; MapLayer pointsLayer; private void MyMap_ZoomLevelChanged(object sender, MapZoomLevelChangedEventArgs e) { repositionPoints(); // This is done other way but for the sake of brevity } private void repositionPathPoints() { try { Polyline path = (Polyline)pointsLayer.First(TrackPath).Content; // retrieves MapOverlay corresponding to line path.Points.Clear(); path.Points = new PointCollection(); foreach (Geocoordinate coord in _coordinates) […]

REST服务上的错误请求错误使用POST(json数据)调用方法?

嗨,我是RESTful WCF的新手,我正在尝试使用POST对webservice方法进行简单的调用,这是我的代码 Service Interface code [ServiceContract] public interface IJsonSave { [OperationContract] [WebInvoke(UriTemplate = “/SaveJason”, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = “POST”, BodyStyle = WebMessageBodyStyle.WrappedRequest)] string SaveJason(string value); } web.config文件代码 我尝试使用提琴手她是我的标题 POST http://localhost:50267/JsonSave.svc/Rest/SaveJason User-Agent: Fiddler Content-Type: application/json Data-Type: json Host: localhost:50267 申请机构: ({“value”:”asdfasd”}) 它给出了HTTP/1.1 400 Bad Request错误,当启用调试细节时,它会给出以下堆栈跟踪 The server encountered an error processing the […]

存储库上的Ninject WCF垃圾收集

我正在使用带有WCF扩展的Ninject 2.2。 在我的大多数服务中,存储库都会快速实例化/释放。 但是,我的一项服务执行长时间运行(2-3分钟)。 如果我观察w3wp进程,我可以看到使用SQL建立的TCP / IP连接,我可以在SQL上运行sp_who2并查看连接。 完成这些操作后,连接将保持打开状态5-10分钟。 当我多次运行该操作时,我没有看到生成新的连接,但是我将运行该应用程序的多个实例,并且我发现之前的性能下降,同时发送了那些长时间运行的操作,并且在几分钟后自行修复。 这个垃圾收集可以成为问题的一部分吗?如何解决? 这是我的Ninject绑定: Bind().To().InRequestScope(); 这是我的WCF绑定: 我意识到一个选择是将服务使用的存储库数量减少到一个,但我真的在寻找一个临时解决方案。

缩放单身人士

在为基于服务器的应用程序考虑一些架构问题困难时,我觉得我将不得不使用单身人士来实现我的目标。 纯粹出于以下原因(certificate我的气味): 我不需要将昂贵的对象深入到调用堆栈中 我可以在任何上下文中对单例管理对象执行函数。 (很多代码已经存在,因此我不愿意重写其他工作代码的大量代码) 除此之外,Singletons提出了另一个问题。 我的基于服务器的应用程序本质上是一个DLL,其类可以调用多个服务器实例。 服务器实例类包含单例管理对象。 通常,这将由Windows服务管理,因此服务器:机器比率将是1:1。 所以你可以把它看作(其中 – >是1:1,=>是1:很多): MACHINE – > ServiceHost(Windows服务?) – >服务器实例 – >单例管理对象 但是,我们希望允许SaaS模型,该模型需要服务主机(无论是Windows服务还是Win32应用程序)才能根据业务需要启动多个服务器。 因此,物理机器可以运行单个服务器主机,该主机将运行多个服务器实例。 这将是(其中 – >是1:1,=>是1:很多): MACHINE – > ServiceHost(Windows服务?) =>服务器实例 – > 单例管理对象 问题是这些单例将在服务器之间共享。 哪个不可能发生。 单例与服务器实例必须为1:1。 假设我无法摆脱这些单例,我是否可以通过将服务实例类作为单独的进程/内存空间来将这些服务器实例彼此分开? 我只能想象我需要启动多个EXE(并使用WCF来管理),每个服务器实例一个。 这显然不是很好。

WCF服务超时

我有一个暴露wcf服务的插件。 如果我使用WCFStorm测试这项服务,一切正常。 我马上收到回复。 当我尝试从加载插件的应用程序中使用服务时,我会抽出时间。 ProgrammingMaster_ServiceClient aClient = new ProgrammingMaster_ServiceClient(); aClient.Endpoint.Address = new EndpointAddress(“http://localhost:8081/ProgrammingMaster/PM_Service”); aClient.BeginProgrammingSession(0x01); aClient.Close(); 我正在使用的代码来使用该服务。 ProgrammingMaster_SErviceClient由svcutil.exe生成。 如果我删除该行,我会遇到同样的问题 aClient.Endpoint.Address = new EndpointAddress(“http://localhost:8081/ProgrammingMaster/PM_Service”); 我不确定我应该在哪里开始调试这个。 被调用的服务在不同的网络上发送消息。 当我通过wcfstorm调用它时,我可以看到服务发送的消息。 所以我知道服务正常。 当我从我的应用程序调用导致超时的服务时,我做错了什么。 编辑:超时后(我正在捕获并记录exception),服务在其他网络上发送它的消息,就像它应该的那样。 编辑2:希望这是一个更好的解释。 所以我有一个暴露Web服务的插件,并使用不同的Web服务。 因此,插件基本上连接到特殊网络上的对象,然后通过使用Web服务传递该对象属性值。 我有一个应用程序公开插件使用的Web服务来提供远程对象值的更新,并使用插件公开的Web服务将命令传递给远程对象。 插件向应用程序发送更新时没有超时问题。 当应用程序使用Web服务通过插件向远程对象发送命令时,我收到超时错误。 超时到期后,执行命令。 因此,Web服务被成功调用。 我想我只是没有得到回复? 编辑3:这是我的应用程序配置文件。 我将发送超时降低到00:00:01,以便等待时间不长,但我真的想修复它,所以它不必每次都超时。

具有消息队列的任务处理状态

我正在研究一个产品数据导入系统,该系统从外部源下载产品数据,将其转换为正确的模式,并存储结果 – 实际上是一个ETL系统。 系统处理的核心消息类型是“ImportProductCommand”,它指定要导入的产品和源。 但是,导入命令很少单独发送。 典型的业务需求是从给定的源导入一整套产品。 目前,这表示为“ImportProductsCommand”消息,可以指定要导入的多个产品。 命令处理程序使用此消息,将其转换为单独的“ImportProductCommand”消息,并将它们发送到队列进行处理。 单个导入请求的使用者发布“ProductImportedEvent”或“ProductImportFailedEvent”。 收到“ImportProductsCommand”消息后,服务会为消息分配GUID标记,将消息放入队列,然后返回标记。 然后将令牌用作相关ID,以便可以将单个导入请求与批量导入请求相关联。 给定此基础结构,可以确定与给定令牌关联的事件数,从而确定导入产品或失败导入的数量。 缺少的是一个显式事件,表明批量导入已完成。 单个导入请求的处理程序未明确意识到它是批量导入请求的一部分。 当然,这可以通过了解要导入的产品数量以及通过计算与特定相关ID关联的导入事件的数量来推断。 当前实现利用消息队列系统来处理进程重新启动和失败,但对批量导入请求不太明确。 总的来说,系统需要回答的查询是: 是否完成了给定的批量导入? 给定批次导入剩余多少个别导入? 完成了多少个别import? 有多少是错的? 有哪些最佳实践或建议的方法来支持这些查询,并仍然利用消息排队系统来实现弹性? 目前,将它们联系在一起的是上面提到的令牌,但是没有明确的记录来表示批量导入请求实体,如果有,那么单个导入请求处理器需要知道这样的实体来更新地位相应。 所有这些都是使用C#,NServiceBus实现的,并作为IIS WCF应用程序托管。