Tag: wcf

在.Net中查找下一个TCP端口

我想为一个WCF服务调用创build一个新的net.tcp:// localhost:x / Service端点,并带有一个dynamic分配的新的打开tcp端口。 我知道,当我打开一个连接到给定的服务器时,TcpClient将分配一个新的客户端端口。 有没有一种简单的方法来find下一个开放的TCP端口在.Net? 我需要实际的编号,以便我可以构build上面的string,0不起作用,因为我需要将该string传递给另一个进程,以便我可以在该新通道上callback。

为什么没有find我自定义的WCF行为扩展元素types?

我有一个包含两个项目的解决scheme。 一个项目是一个ASP.NET Web应用程序项目,一个是类库。 Web应用程序具有对类库的项目引用。 这两个都没有强烈的名字。 在我称为“Framework”的类库中,我有一个端点行为(一个IEndpointBehavior实现)和一个configuration元素(一个从BehaviorExtensionsElement派生的类)。 configuration元素是我可以通过configuration将端点行为附加到服务。 在Web应用程序中,我有一个支持AJAX的WCF服务。 在web.config中,我将AJAX服务configuration为使用我的自定义行为。 configuration的system.serviceModel部分非常标准,如下所示: <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="MyEndpointBehavior"> <enableWebScript /> <customEndpointBehavior /> </behavior> </endpointBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service name="WebSite.AjaxService"> <endpoint address="" behaviorConfiguration="MyEndpointBehavior" binding="webHttpBinding" contract="WebSite.AjaxService" /> </service> </services> <extensions> <behaviorExtensions> <add name="customEndpointBehavior" type="Framework.MyBehaviorExtensionsElement, Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> </behaviorExtensions> </extensions> </system.serviceModel> 在运行时,这是完美的。 启用AJAX的WCF服务正确使用我的自定义configuration的端点行为。 问题是当我尝试添加一个新的AJAX WCF服务。 如果我做Add – > […]

WCF – Windows身份validation – 安全设置需要匿名

我努力让WCF服务在我们的服务器上的IIS上运行。 部署后,我最终得到一个错误消息: 此服务的安全设置需要“匿名”身份validation,但不支持承载此服务的IIS应用程序。 我想使用Windows身份validation,因此我禁用了匿名访问。 还要注意,有aspNetCompatibilityEnabled(如果这有什么区别)。 这是我的web.config: <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <bindings> <webHttpBinding> <binding name="default"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" proxyCredentialType="Windows"/> </security> </binding> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="AspNetAjaxBehavior"> <enableWebScript /> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="defaultServiceBehavior"> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceAuthorization principalPermissionMode="UseWindowsGroups" /> </behavior> </serviceBehaviors> </behaviors> <services> <service name="xxx.Web.Services.RequestService" behaviorConfiguration="defaultServiceBehavior"> <endpoint behaviorConfiguration="AspNetAjaxBehavior" […]

无法添加服务引用 – locking/只读

每当我去添加一个服务引用,我得到的错误: 无法添加服务参考“Servicereference1.reference” 错误:无法检出当前文件。 该文件可能是只读或locking的,或者您可能需要手动检查文件。 我已经在项目中提供了一个服务参考,但不知何故,它给了我一个错误,指出: 找不到引用合同(servicename)的默认端点元素 web.config和服务引用configuration中的端点是相同的(本地主机) 我也无法更新该参考,因为我会得到相同的'无法检查出当前文件'错误。 编辑:这个问题是不是本地只是这个项目。 我试图做一个新的,完全独立的项目,并添加一个服务的参考,我得到了同样的错误。

使用wcf对sql server运行查询时发生奇怪的错误

我正在build立一个asp.net应用程序,在Windows Server 2003(vps主机)上使用II6。 我遇到了我的开发机器上没有收到的错误(Windows 7,iis 7.5,64位)。 当我的wcf服务试图启动我的查询运行本地sql服务器这是我收到的错误: 内存门检查失败,因为空闲内存(43732992字节)小于总内存的5%。 因此,该服务将不可用于传入的请求。 要解决此问题,请减less计算机上的负载或调整serviceHostingEnvironmentconfiguration元素上的minFreeMemoryPercentageToActivateService的值。 和想法?

现有连接被远程主机强制closures – WCF

我有一个WCF Web服务工作正常。 然而,有一个特定的呼叫失败 – 但只对某些用户失败。 调用非常简单 – 这是一个调用来获取Person对象的列表。 对于用户A,它工作正常。 该服务查询数据库,创buildPerson对象列表并将其返回给调用应用程序。 用户B失败。 奇怪的是,当我debugging服务似乎工作正常。 它能够查询数据库,并创buildList对象并将其返回。 服务本身永远不会失败。 但客户端应用程序收到“现有连接被远程主机强行closures”错误。 对我来说,当服务层试图以XML格式打包数据并发送callback用应用程序时,似乎发生了一些事情。 我认为它必须是一个数据相关的问题,因为这个调用对其他用户来说工作正常。 我已经可视化地看了一下这些数据,而且我没有看到任何奇怪的东西。 一个猜测是,用户B的数据有一些时髦的隐藏字符或什么,因此导致服务意外closures。 就是这样 有任何想法吗?

在WCF / WIF中,如何合并来自两个不同客户端的自定义sts令牌的声明

我试图创build类似于:客户端authentication并从自定义STS1获取令牌,下一个客户端使用机器密钥授权,并在自定义STS2上发出令牌,并获得另一个令牌。 用最后一个令牌,客户端请求RP服务的方法。 所有服务均在IIS上进行托pipe,并使用主动联合scheme。 两个STS的terminal都使用ws2007Federation和ws2007Http绑定,RP使用ws2007FederationBinding作为发行者。 如果我用CreateChannelWithIssuedToken创build通道,我只能看到来自STS1的令牌,不能从STS2获取令牌。 所以我决定把STS1的令牌作为ActA RST的属性传给STS2令牌。 那失败了 – 不能解密令牌。 我怎样才能将这两个标记传递给STS2并将它们合并起来? 是不是一个好主意 – 用RST发送刚刚从STS1令牌提取的声明?

从JSON模式生成C#类

我正在创build一个以JSON格式返回大量数据的C#WCF Web服务。 客户端是一个iPad应用程序,目前正在由另一个团队开发,所以我正在制定规格,没有示例数据。 目前,JSONstring是由.net框架创build的,我的Web服务正在返回一个C#对象,其中包含所有由框架使用DataContracts进行序列化的信息。 我的问题是,通信规范只包含JSON模式文件(基于http://json-schema.org/ )。 为了便于开发,我想在C#中生成相应的类,但是由于这些文件包含了大量的信息,并且有十几个文件,所以我不想手动创build这些类。 所以我正在寻找一种工具,可以让我: 从JSON模式生成C#类。 将JSON模式转换为XSD文件 那么创build这些类就很容易,因为有很多工具可以从XSD生成类。 我发现了很多工具来validation对JSON模式的JSONstring或从JSONstring生成类,但似乎没有任何帮助我。 有JSON.NET,但它似乎是一个图书馆,而不是一个工具,我没有find任何有关生成类的信息。 所以,如果有人知道一个工具或有一个想法,我怎么可以生成这些类(我尝试了一个工具,在Java中创build类,但我不能使它的工作)。

数据合同中的IsReference属性

DataContract中IsReference属性的用途是什么? 请求和响应如何适用此属性?

为什么我的ChannelFactory看不到我的端点configuration?

我一直在跟随米格尔·卡斯特罗在WCF 这里的优秀文章,它的工作很好,除了我有以下代码 public AdminClient() { ChannelFactory<IProductAdmin> factory = new ChannelFactory<IProductAdmin>(); productAdminChannel = factory.CreateChannel(); } 在我的app.config文件中,我有以下configuration: <system.serviceModel> <client> <endpoint address="net.tcp://localhost:8002/ProductBrowser" binding="netTcpBinding" contract="Contracts.IProductAdmin" /> </client> </system.serviceModel> 但是,当我运行AdminClient的构造函数时,我得到一个exception,说没有定义端点。 但是,如果我改变我的configuration,给端点一个名称,然后创build工厂如下,它的工作原理。 public AdminClient() { var fac = new ChannelFactory<IProductAdmin>("admin"); productAdminChannel = fac.CreateChannel(); } <system.serviceModel> <client> <endpoint name="admin" address="net.tcp://localhost:8002/ProductBrowser" binding="netTcpBinding" contract="Contracts.IProductAdmin" /> </client> </system.serviceModel> 我很想为此解释。 在MSDN中的文档没有太大的帮助…