Articles of wcf

WCF作为服务托pipe

我有一个VB.NET WCF服务作为一个窗口服务托pipe。 我能够创build一个安装包,将服务安装到我的机器上,然后从“pipe理工具”中的“服务”手动启动服务。 现在,当我尝试在我的testing控制台应用程序(地址: http:// localhost:8080 / )中引用服务时,出现以下错误: 下载“http:// localhost:8080”时出错 无法连接到远程服务器由于目标机器主动拒绝它127.0.0.1:8080`,因此无法build立连接 元数据包含无法parsing的引用:“http:// localhost:8080 /”。 无法连接到http:// localhost:8080 / 。 TCP错误代码10061:由于目标机器主动拒绝127.0.0.1:8080,所以无法build立连接。 无法连接到远程服务器由于目标机器主动拒绝,无法build立连接127.0.0.1:8080如果在当前解决scheme中定义了服务,请尝试构build解决scheme并重新添加服务引用。 不知道我能做些什么。 有任何想法吗??? 谢谢,杰森。 以下是我的服务中app.config的代码: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!– This section defines the logging configuration for My.Application.Log –> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!– Uncomment the below section to write to […]

WCF Windows服务超时

我有一个客户端应用程序开发.net seding一个请求wcf服务,应该发送响应。如果执行时间在1分钟,没有错误,如果超过1分钟的错误是 内部exception:发送到net.tcp:// localhost:18001 / PitToPort / 2008/01/30 / StockpileService / tcp的请求操作未在configuration的超时(00:01:00)内收到回复。 分配给此操作的时间可能是更长时间的一部分。 这可能是因为该服务仍在处理该操作或由于该服务无法发送回复消息。 请考虑增加操作超时(通过将通道/代理强制转换为IContextChannel并设置OperationTimeout属性),并确保服务能够连接到客户端 如何增加超时和如何? 什么是最好的解决scheme?

ServicePoint.Expect100继续Windows商店应用程序

正如标题所说,我需要为我的应用程序设置此标志为false,如下所示: ServicePoint.Expect100Continue = false; 然而,ServicePoint和ServicePointManager都不可访问,我找不到另一种方法来设置此属性。 另外,没有app.config,所以通过configuration来设置也是不可能的。 如果我没有把这个设置为false,这个标志被发送到请求中,并且发生CommunicationException。 我不能更改服务器代码,我只是服务器数据的消费者。 该服务添加了“添加服务引用”对话框。 任何方法调用都会导致: The underlying connection was closed: An unexpected error occurred on a receive. 当我调用相同的服务时,从控制台应用程序添加“添加服务引用”,有同样的错误。 原因是Expect100Continue属性。 如果我使用通常的方法删除它,它在控制台应用程序中工作。 所以,我想知道Windows Store应用程序的等效物。

IP端点0.0.0.0:13000上已经有一个监听器。 ?? (使用WCF的TCP)

我试图找出为什么即使在重新启动计算机后使用该端口! System.ServiceModel.AddressAlreadyInUseException:IP端点0.0.0.0:13000上已有一个侦听器。 如果另一个应用程序已经在此端点上侦听,或者您的服务主机中有多个具有相同IP端点但具有不兼容的绑定configuration的服务端点,则可能会发生这种情况。 —> System.Net.Sockets.SocketException:System上的System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot,SocketAddress socketAddress)通常只允许使用每个套接字地址(协议/networking地址/端口)。 Net.Sockets.Socket.Bind(EndPoint localEP)在System.ServiceModel.Channels.SocketConnectionListener.Listen()—内部exception堆栈跟踪结束—在系统的System.ServiceModel.Channels.SocketConnectionListener.Listen()。 System.ServiceModel.Channels.ConnectionAcceptor.StartAccepting()System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen()上的System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)上的ServiceModel.Channels.TracingConnectionListener.Listen()。 ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)at System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout)at System.ServiceModel.Channels.Communicat 在System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan超时)在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan超时)上的ionObject.Open(TimeSpan超时)。 ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)在Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo信息)System.Net.Sockets.SocketException(0x80004005):每个套接字地址(协议/networking地址/端口)通常允许在System.Net.Sockets.Bind(EndPoint localEP)上的System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot,SocketAddress socketAddress)在System.ServiceModel.Channels.SocketConnectionListener.Listen() 你如何找出哪个进程在监听那个端口(13000)? Netstat在该端口上没有显示任何内容。 这是我的App.config: <system.web> <compilation debug="true" /> </system.web> <!– When deploying the service library project, the content of the config file must be added to the host's app.config file. System.Configuration does not support config […]

从自己的线程停止IIS网站

我正在使用下面的代码来阻止我的WCF服务从它自己的线程来更新我的服务使用的一些文件。 try { var server = new ServerManager(); var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site"); if (site != null) { Thread.Sleep(1000); site.Stop(); if (site.State == ObjectState.Stopped) { Thread.Sleep(5000); } site.Start(); } else { throw new FaultException("Server Are Trying To Stop Is not Found"); } } catch (Exception ex) { throw new FaultException(ex.Message); […]

HTTP请求未经客户authenticationscheme“Ntlm”

在调用Web服务时,出现以下错误: HTTP请求未经客户authenticationscheme“NTLM”授权。 从服务器收到的validation头是“NTLM”。 HTTP请求未经客户authenticationscheme“NTLM”授权。 从服务器收到的validation头是“NTLM”。 我有一个调用WCF Web服务的Silverlight 4应用程序,都在我的IIS(7)上。 我的WCF Web服务使用NTLM(Windows身份validation)调用安装在其他Web服务器上的另一个ASMX Web服务。 这两个服务器,我的和ASMX Web服务的主机都在同一个域中。 当Silverlight客户端使用http://localhost/MySiteName从服务器打开应用程序时,一切正常。 但是,当Silverlight客户端使用http://MyServerName/MySiteName从不同服务器(不是服务器,但仍在同一个域中)打开应用程序时, http://MyServerName/MySiteName出现错误。 Windows身份validation在我的IIS中启用。 匿名身份validation在我的IIS中被禁用。 用于调用我的WCF Web服务的绑定configuration是: <binding name="winAuthBasicHttpBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> 调用ASMX Web服务的绑定configuration是: <binding name="ClNtlmBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Ntlm" /> </security> </binding>

在WCF和Windows服务中下载大文件

我一直在创build一个新的服务来下载大文件到客户端。 我想在Windows服务中托pipe该服务。 在服务中,我写道: public class FileTransferService : IFileTransferService { private string ConfigPath { get { return ConfigurationSettings.AppSettings["DownloadPath"]; } } private FileStream GetFileStream(string file) { string filePath = Path.Combine(this.ConfigPath, file); FileInfo fileInfo = new FileInfo(filePath); if (!fileInfo.Exists) throw new FileNotFoundException("File not found", file); return new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); } public RemoteFileInfo DownloadFile(DownloadRequest request) { FileStream stream […]

HTTP请求未经客户端身份validationscheme“协商”授权。 从服务器收到的validation头是“NTLM”

几天前,我在客户端和wcf web服务之间使用Windows身份validation时遇到了身份validation问题。 我得到的错误是“HTTP请求是未经授权的客户端身份validationscheme”Negotiate“,从服务器接收到的身份validation头是”NTLM“,堆栈上的解决scheme都没有工作,因为大部分解决scheme都与旧方法有关。

是否有可能使用WCF与Windows内核模式软件进行通信?

WCF支持一些互操作性绑定。 这些绑定是否允许与内核模式sw进行通信? AFAIK内核模式sw可以在Local System安全上下文中打开命名pipe道。 这些命名pipe道是否可以与WCF互操作?

WCF没有HTTP.SYS

在WCF中使用HTTP绑定时,我需要授予自己特殊的权限才能绑定到该端口/path。 我知道这是因为WCF通过http.sys驱动程序接受HTTP通信。 在过去,我们可以新build一个套接字,并绑定到任何未使用的旧端口,而不是pipe理员。 NetTcpBinding仍然能够做到这一点。 如果我不关心http.sys,有没有办法告诉WCF不要使用它,而只是打开一个普通的旧套接字,而仍然使用HTTP绑定?