Tag: #wcf

抛出EndPointNotFoundException所花费的时间

我从代码调用服务,如果服务因任何原因停止,它会给我EndPointNotFoundexception。 我没有设置openTimeOut,所以它将考虑默认的1分钟超时。 我这样叫服务, private void MyServiceCall(Action serviceCall) { try { if (serviceCall != null) { serviceCall(); } } catch (EndpointNotFoundException endpointNotFoundException) { throw new EndpointNotFoundException(endpointNotFoundException.Message, endpointNotFoundException); } 我的问题是,如果服务停止,则需要1分钟才能抛出EndPointNotFoundException? 编辑:: 在这种情况下,我知道服务已停止。 我正在通过停止服务来测试它。 问题是我们已经开发了断开连接的senario,如果服务是停止的,它将返回默认数据,但需要时间,所以我调查是openTimeOut负责它。

使用WebSockets的自托管WCF无法使用SSL

我在控制台应用程序中有此代码。 我试图从开发工具chrome连接,但得到此错误,虽然问题肯定在WCF方面: WebSocket connection to ‘wss://127.0.0.1:5650/Echo’ failed: Error in connection establishment: net::ERR_CONNECTION_RESET WSS没有达到我的服务器代码,没有例外,甚至没有日志。 最小修改的WS工作正常。 我使用nuget的Microsoft.WebSockets来简化代码: WebSocketHost server = new WebSocketHost(typeof(EchoWSService), new Uri(“https://127.0.0.1:5650/Echo”)); var bindingSsl = WebSocketHost.CreateWebSocketBinding(true); server.AddWebSocketEndpoint(bindingSsl); server.Open(); 我已经尝试过自定义证书validation器,但正如我所说它没有达到我的代码。 现在我有一个相同的代码,除了使用ServiceRoute的ASP.net应用程序中的server.Open() ,它工作得很好! 是的SSL和VS为IIS Express生成的自签名证书: RouteTable.Routes.Add(new ServiceRoute(“Echo”, new TRWebSocketServiceFactory(), typeof(EchoWSService))); 浏览器方面只有: var ws = new WebSocket(‘wss://127.0.0.1:5650/Echo’) 在web.config我没有超过 那么为什么地狱不能在一个简单的控制台应用程序中运行我自己托管的WCF呢?

从同一网络上的另一台PC测试wcf webservice

我在visual studio 2010上创建了一个简单的wcf webservice。 我在ASP.NET开发服务器上运行它。 我尝试使用本地URL在浏览器上调用本地的简单GET服务: http://localhost:15021/MyService.svc/getData/test 这有效,我得到了正确的JSON结果。 我也试过小提琴手和它的工作。 我想从连接在同一网络上的另一台计算机上调用它。 我从cmd获得了我的本地IPV4,并尝试在另一台PC上用它替换localhost http://10.0.0.14:15021/MyService.svc/getData/test 但是我收到error 502: Connection failed 如何在同一网络上从另一台PC / Mobile调用我在ASP.NET开发服务器上运行的服务? 谢谢

建立DAL。 使用EDM(来自数据库)

我必须开发一个在windows(wpf)中运行的lob应用程序,但应该以两种方式部署: 使用本地数据库(同一台计算机) 使用远程数据库(在同一网络中) 我将使用从数据库生成的实体数据模型(dbcontext,EF 4.0)(VS2012,sql server express 2012) 我想开发一个独特的数据访问层,UI将绑定到该层,它将直接从dbcontext(本地数据库)或从dbcontext(远程数据库)公开数据的WCF服务获取数据 我不知道从哪里开始,我需要指导,例子,我知道这取决于应用程序的性质,但是一些例子,文章,会有很大的帮助。 我没有找到与我的需求类似的例子 我想我最好使用DI框架,但我想首先关注DAL。

如何将文件上载到IIS中托管的.NET 3.5 WCF服务?

我已经把头发拉了一段时间了。 有人可以提供一个非常简单的示例(或工作示例的链接),说明如何将文件上载到IIS中托管的WCF服务。 我从简单的事情开始。 我想通过POST从客户端调用URL,传递文件名并发送文件。 所以我在合同中添加了以下内容: [OperationContract] [WebInvoke(Method = “POST”, UriTemplate = “/UploadFile?fileName={fileName}”)] void Upload(string fileName, Stream stream); 在.svc文件中实现它: public void Upload(string fileName, Stream stream) { Debug.WriteLine((fileName)); } 我立即在运行项目时遇到错误: For request in operation Upload to be a stream the operation must have a single parameter whose type is Stream. 不知道从哪里开始。 很想看到一个真实的工作示例。 PS我在.NET 4中用WCF 4做了这个,它看起来简单得多,但我不得不降级。 在.NET 3.5中,我遗漏了一些东西。

即使ServerCertificateValidationCallback返回true,也“无法为具有权限的SSL / TLS建立安全通道”

我正在与使用带有证书身份validation的传输安全性设置WCF服务(WebHttpBinding)的供应商合作。 我为供应商提供了一个类似的服务,它正常工作,所以我有一个基本的想法,它应该如何工作。 在Windows 7上运行,当我在自己的帐户下使用服务时,一切正常,我得到了回复。 当我在测试帐户下使用它时,我在mscorlib中得到一个例外,它“无法为具有权限XXXX的SSL / TLS建立安全通道”。 如果我将测试帐户添加到内置管理员组,它可以正常工作。 服务器的证书是自签名的,主题字段设置为CN = XXXX,我在个人存储中具有服务器证书,在受信任的根证书颁发机构存储中具有CA证书。 此外,如果我尝试设置System.Net.ServicePointManager.ServerCertificateValidationCallback来打印诊断并返回true,我会得到一些有趣的行为。 在我的帐户下运行,回调被调用两次,然后WCF调用成功。 在测试帐户下运行,它被调用一次,返回,然后我得到上面的例外。 我最好的猜测是,这与测试帐户缺少的某些特权有关,但我不明白Windows如何处理证书以确定无疑,而且我不知道从哪里开始查找。

为IQueryable生成表达式

我正在使用LINQ-> WCF数据服务 – > EF,它支持LINQ的一个子集,但有一些注意事项。 一旦学习了各种各样的技巧和变通方法,我就没有遇到过麻烦,但是我想制作一个可重用的表达式生成器,用于仅比较DateTime的Date部分。 使用常规EF,您可以使用EntityFunctions.TruncateTime (EF <6)或DbFunctions.TruncateTime ( DbFunctions.TruncateTime +),但这不适用于数据服务。 到目前为止,我的解决方案是反复构建where子句的混乱: .Where(x => x.DateProperty.Year == DateToCompare.Year && x.DateProperty.Month == DateToCompare.Month && x.DateProperty.Day == DateToCompare.Day); 这只是令人讨厌的必须反复写(但它有效),所以我试图创建类似的东西: .WhereDate(x => x.DateProperty, DateToCompare); 任何类似的东西都会做,只是简短,甜蜜和可读 – 我厌恶重复的不必要的感觉代码。 结构不是问题,我知道我需要一些需要IQueryable , Func (或Expression<Func> )和DateTime并返回IQueryable 。 public static IQueryable WhereDate(this IQueryable data, Func> selector, DateTime date) { return data.Where(/*Something*/); }; 我遇到麻烦的地方就是采用这个并构建一个可以放入where子句而不违反表达式树的限制的表达式。 […]

允许匿名访问单个WCF服务方法

我有一个带有消息安全性和用户名凭据的WCF服务。 我的大多数方法都是以 [PrincipalPermission(SecurityAction.Demand, Role = ConstStrings.Roles.Admin)] 并且这些方法应该仅由经过身份validation的用户调用。 我想添加一个匿名调用的方法,但是我收到一个错误: 未提供用户名。 在ClientCredentials中指定用户名。 我喜欢类似于MVC的[AllowAnonymous]属性

RIA服务:包括选择(许多)不工作

我有两种实体类型: Document (有一个Customer )和Customer (有一个Collection Documents ) 我的疑问是根据客户的姓名或号码为客户提供文件。 查询如下所示: public IQueryable GetCustomerDocuments(DateTime startDate, DateTime endDate, string filterText) { return this.ObjectContext.Customers .Where(c => c.CustomerName.Contains(filterText) || c.CustomerNumber.Contains(filterText)) .SelectMany(c => c.Documents) .Where(d => d.Date >= startDate && d.Date <= endDate); } 当查询返回时,我希望它包含Document和Customer实体…. 我已经尝试了我能想到的一切,包括Include(“Documents.Customer”) , Include(“Customer”)等。 我肯定在元数据中设置了IncludeAttribute 。 思考? 这有可能吗? 谢谢!

访问WCF服务时出现FileLoadException

发布到生产服务器后,我们会在重新启动应用程序后不时收到此错误。 要修复它,我们的管理员正在重新启动应用程序并再次运行。 我们不知道发生了什么。 我能检查什么? 编辑:在同一个应用程序中,我们有asmx webservices,需要标识impersonate = true,因此在web.config中设置。 编辑2:我需要纠正我说的话。 应用程序池回收后,我们收到此错误。 但不总是。 错误:http://SERVER_NAME/APP_NAME/OurService.svc LastError:System.IO.FileLoadException:无法加载文件或程序集’System.IdentityModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其中一个它的依赖关系。 句柄无效。 (HRESULTexception:0x80070006(E_HANDLE)) 文件名:’System.IdentityModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089′ —> System.Runtime.InteropServices.COMException(0x80070006):句柄无效。 (HRESULTexception:0x80070006(E_HANDLE)) 在System.ServiceModel.Activation.HostedImpersonationContext..ctor() 在System.ServiceModel.Activation.HostedHttpRequestAsyncResult..ctor(HttpApplication context,Boolean flowContext,AsyncCallback callback,Object state) 在System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context,Boolean flowContext) 在System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender,EventArgs e) 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously) 消息:无法加载文件或程序集’System.IdentityModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一。 句柄无效。 (来自HRESULT的exception:0x80070006(E_HANDLE))源:System.ServiceModel