Tag: #wcf

无法打开主机WCF REST服务

我正在尝试实现一些WCF和REST服务来上传我的服务器上的文件,我找到了一些我想要实现的代码,但还没有成功。 我的代码 class Program { static void Main(string[] args) { string address = “http://localhost/UploadService/UploadService.svc/UploadFile/theFile.txt”; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address); req.Method = “POST”; req.ContentType = “text/plain”; Stream reqStream = req.GetRequestStream(); string fileContents = “the quick brown fox jumped over the lazy dog.”; byte[] bodyContents = Encoding.UTF8.GetBytes(fileContents); reqStream.Write(bodyContents, 0, bodyContents.Length); reqStream.Close(); HttpWebResponse resp; try { resp = (HttpWebResponse)req.GetResponse(); […]

IEnumerable 作为WCF方法的返回类型

如果我定义一个Test对象,使用string和Datetime属性并使用它来返回WCF中的IEnumerable(T)集合 [OperationContract] IEnumerable GetTestNotes(); 当从客户端调用服务时,我看到它正在将IEnumerable转换为Test []: public Test[] GetTestNotes() { return base.Channel.GetTestNotes(); } 我能够获得数据。 问题是:使用IEnumerable(T)接口而不是具体的List(T)有多可靠? 使用这些WCF服务的客户端不仅在.NET中,而且在JAVA中。

使用WCF使用RESTful JSON API

我是WCF的新手(并且在.NET中一般都很生疏)所以有一个明显的机会这是一个已回答的问题而我错过了它。 我正在构建一个ASP.NET MVC应用程序,它将为其后端使用基于RESTful JSON的API。 我一直在研究如何在.NET中使用这种API的不同选项,看起来WCF是迄今为止最受欢迎的选择。 稍微阅读WCF我现在有一个基本的消费者类来发出请求,这是一个开始。 但现在我需要做更多的事情,而且我没有取得多大进展。 我需要使用JSON正文向API发送POST。 这是我到目前为止所拥有的: using System.ServiceModel; using System.ServiceModel.Web; using System.Runtime.Serialization; namespace APIConsumer { [ServiceContract] public interface IAPIClient { [OperationContract] [WebInvoke( Method = “POST”, BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = “/session/login.json” )] string SessionLogin(string login_name); } public class APIClient : ClientBase, IAPIClient { public string SessionLogin(string […]

指定自定义序列化程序时,未反序列化故障详细信息

我在我的应用程序中使用自定义XmlObjectSerializer 。 为此,我用MyOperationBehavior替换XmlSerializerOperationBehavior ,它看起来像这样: public class MyOperationBehavior : DataContractSerializerOperationBehavior { public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList knownTypes) { return new MySerializer(); } public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList knownTypes) { return new MySerializer(); } } 问题在于,通过这样做,任何故障都被反序列化为非genericsFaultException而不是FaultException并且我无法访问故障的详细信息。 在做了一些调查之后,我发现问题的根源在于,通过inheritanceDataContractSerializerOperationBehavior ,.NET在内部将FaultFormatter设置为DataContractSerializerFaultFormatter ,它不知道如何反序列化故障的细节(而不是XmlSerializerFaultFormatter )。 问题肯定不在MySerializer ,因为在它到达我的ReadObject方法之前抛出了FaultException 。 所以我的问题是我该怎么做才能使WCF正确反序列化我的错误细节? 我试着找一种自己设置FaultFormatter的方法,但没有运气,特别是因为所有这些格式化程序都是内部的。

在IIS 7.5中部署WCF服务

我是WCF的新手。 我期待步骤在IIS上部署WCF并使用该服务。 我遵循与在IIS上部署网站相同的步骤,也将默认文档设置为Service1.svc 现在当我尝试使用这个wcf服务时,它给了我以下错误。 Metadata contains a reference that cannot be resolved: ‘http://manish-pc:8000/Service1.svc?wsdl’. The WSDL document contains links that could not be resolved. There was an error downloading ‘http://manish-pc:8000/Service1.svc?xsd=xsd0’. The underlying connection was closed: An unexpected error occurred on a receive. Unable to read data from the transport connection: An existing connection was forcibly closed […]

将行为属性添加到WorkflowServiceHost

大家好我在向WorkflowServiceHost添加自定义行为时遇到问题。 这是我的WorflowServiceHostFactory: public class ScoringWorkflowServiceHostFactory : WorkflowServiceHostFactory, IServiceHost { private static IKernel _InjectionInstance; public IKernel InjectionInstance { get { return _InjectionInstance ?? (_InjectionInstance = new StandardKernel(new ScoringWorkflowServicesNinjectModule(Scope))); } } public object Scope { get { return Guid.NewGuid(); } } public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses) { String fullFilePath = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, constructorString); WorkflowService wf = […]

如何启动WCF语音聊天应用程序?

我正在寻找开发WCF语音聊天应用程序。 我想使用WCF服务来构建应用程序 | Invite | | ——————————–> | | OK | | | | Audio flow | | | AB 在其他方面,同一个应用程序应具有侦听服务,因此它接收调用并将调用发送到另一台机器上的另一个相同的应用程序。 (无需额外的服务主机应用程序来接收呼叫)。 我知道也许我应该使用特定的协议,如套接字或其他传输语音,但我会稍后检查。 那么我应该使用什么样的WCF服务,以及哪种类型的绑定最适合此目的。

未指定用于在url处与联合服务进行通信的绑定

我目前正在使用ADFS作为安全令牌服务。 我想将WCF服务与ADFS联合起来。 我创建了WCF服务并使用Federation实用程序添加了ADFS的STS引用。 为了使用联合wcf服务,我创建了WPF应用程序并添加了服务引用。 我使用以下代码调用了服务api。 var client = new SecureWpfApplication.ServiceReference1.Service1Client(); Uri uri = new Uri(“http://tempuri.org/”); ICredentials credentials = CredentialCache.DefaultCredentials; NetworkCredential credential = credentials.GetCredential(uri, “Basic”); client.ClientCredentials.Windows.ClientCredential = credential; client.ClientCredentials.SupportInteractive = false; client.GetData(323); 我收到错误“未指定用于与’https:// {ADFS服务器} / adfs / services / trust / 13 / usernamemixed’的联合服务进行通信的绑定”。 怎么解决这个? 我创建了像wcf一样的服务配置 我收到错误“未指定在’ https://adfsserver.com/adfs/services/trust/13/usernamemixed ‘上用于与联合服务通信的绑定。

创建WCF消息的缓冲副本

我在消息检查器中有以下代码来检查响应正文。 我知道WCF消息只能读取一次,所以我先创建一个副本。 但是使用以下代码我仍然会收到错误“此消息无法支持操作,因为它已被读取。”…我错过了什么? MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue); Message copy = buffer.CreateMessage(); message = copy; XmlDictionaryReader bodyReader = copy.GetReaderAtBodyContents(); bodyReader.ReadStartElement(“Binary”); byte[] bodyBytes = bodyReader.ReadContentAsBase64(); string messageBody = Encoding.UTF8.GetString(bodyBytes); return messageBody; 我也觉得在那里使用Int23.MaxValue感觉不舒服。 什么是合理的尺寸?

C#架构建议:在结构中缓存数据的方法?

我想就C#中可行的架构问你的专家建议。 我有一个C#服务,它响应LAN上本地用户的请求,从互联网上获取数据包,并收集数据以生成结构中的数据数组。 每个数据请求大约需要2秒,并返回4000个字节。 每天可能会有成千上万的请求。 为了加快速度并减少带宽,我需要缓存数据处理的结果,以便第二次和后续访问立即提供给LAN上的任何其他用户(可能有> 50个用户)。 约束: 基础数据永远不会改变,即我不必担心“脏”数据(太棒了!)。 我想要缓存的数据是一个相当复杂的结构,包含DateTime,double等嵌套数组。数据来自互联网提供的数据,使用大量数学。 无论缓存多少数据(即缓存必须限制大小),我都不能使用超过100MB的内存。 我无法通过数字索引索引缓存中的数据,我必须使用日期(“YYYY-MM-DD”)和唯一ID字符串(“XXXXXXXX”)的组合对其进行索引。 它必须很快,即它必须从RAM中提供大部分响应。 缓存中的数据必须每24小时持久保存到磁盘。 以下是我的选择: 使用私有变量(即私有列表或字典)缓存服务器类中的数据,然后偶尔将其序列化为磁盘; 使用数据库; 我对你的专家意见感兴趣。