Tag: web services

Serializable和DataContract(不是?)

我在新项目中阅读了一些代码,发现前开发人员正在使用Serializable和DataContract。 [Serializable] 和 [DataContract(Namespace=”Some.Name.Space”, IsReference = true)] 我假设当存在DataContract属性时,WCF将忽略Serializable。 这是正确的假设吗? 如果没有,同时使用两者有什么好处?

HttpWebRequest.GetRequestStream()在Windows 7 / Vista下的SSL连接上超时

我有一个C#windows应用程序(.Net 3.0 Framework),它使用HttpWebRequest调用PHP Web服务。 在Win 7和Vista中 ,如果通过非SSL(即http:// )进行调用,则代码可以正常工作。 当调用更改为调用链接的SSL(https :)版本时,它会在HttpWebRequest.GetRequestStream()超时。 每次都会发生这种情况 当在Windows XP计算机上运行相同的应用程序时,它可以正常使用HTTP或HTTPS URL。 代码确实接受了所有服务器证书代码。 另外,我添加了System.Net日志记录 。 它会写出日志,但因为数据包是加密的,除了Timeout abort语句之外你真的看不到多少。 我也尝试过Fiddler,但再加上加密数据包,我看不太多。 顺便说一句,当我尝试使用Fiddler2解密应用程序挂起时,这样就没有成功。 无论如何,任何帮助将不胜感激。 谢谢。 我会加: 我可以telnet到端口 我尝试以管理员身份运行应用程序 我试过Win XP兼容模式(尝试任何东西) 我已将连接代码单独添加到一个简单的独立应用程序中

在C#中,我如何捕获Web服务调用中使用的SOAP?

我有一个C#应用程序,它是Web服务的客户端。 我的一个要求是允许捕获我发送的SOAP,这样如果出现问题,我可以修复bug,或者certificate问题出在我正在调用的服务中。 我的WebReference代理服务类像往常一样从System.Web.Services.Protocols.SoapHttpClientProtocol派生。 如果我有一个魔杖,我会让这个基类实现一个OnPost事件,我可以处理将SOAP写入我的日志并继续。 没有像WireShark那样运行数据包嗅探器,是否有一种简单的方法可以获得这种级别的日志记录?

服务结构unit testing和dependency injection

我无法通过调用它的构造函数来测试可靠的服务/ Actor,然后测试它的方法。 var testService = new SomeService(); 抛出NullReferenceException。 那么我可以用部署的服务做什么.. 据我所知,部署的SF Reliable Services / Actors不是标准的.NET类,部署S / A的unit testing可能是一个奇怪的想法。 无论如何,现在我想尝试一下。 例如。 我刚刚部署了一个服务,而不是在测试中我创建了一个Proxy对象并将项添加到Service的输入队列中。 然后我需要声明输入队列计数= 1.如果我刚刚部署了一个服务而没有其他客户端/服务/演员使用它的输入队列,它就可以工作。 但是下次这次测试失败就是问题所在。 我需要让服务停止与其他消费者一起操作,丢弃它的队列而不是测试它。 为此,我可以创建一些TestMode属性和一些方法,如PropareoForTests / TestingCompleted,并在测试之前和之后从测试客户端调用它们。 这样做是不是一个坏主意。 也许有一些unit testingSF的指导方针? 谢谢。 更新: 在研究Service Fabric Web Reference Application示例时,我发现了这个TODO字符串: /// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available. 这是否意味着SF服务将改善其DI支持? 演员怎么样?

如何使用SOAP和不使用WSE在.NET中签署Amazon Web服务请求

亚马逊产品广告API(以前称为Amazon Associates Web服务或亚马逊AWS)已实施新规则,到2009年8月15日,必须对所有Web服务请求进行签名。 他们在他们的网站上提供了示例代码,展示了如何使用REST和SOAP在C#中执行此操作。 我正在使用的实现是SOAP。 你可以在这里找到示例代码,我不包括它,因为有相当数量。 我遇到的问题是他们的示例代码使用WSE 3,我们当前的代码不使用WSE。 有没有人知道如何使用WSDL中自动生成的代码来实现此更新? 如果我不需要,我现在不必切换到WSE 3的东西,因为这个更新更像是一个快速的补丁,让我们能够完全实现这个目前的开发版本(8月) 3,他们开始在实时环境中的5个请求中掉落1个,如果他们没有签名,这对我们的应用程序来说是个坏消息)。 这是执行SOAP请求实际签名的主要部分的片段。 class ClientOutputFilter : SoapFilter { // to store the AWS Access Key ID and corresponding Secret Key. String akid; String secret; // Constructor public ClientOutputFilter(String awsAccessKeyId, String awsSecretKey) { this.akid = awsAccessKeyId; this.secret = awsSecretKey; } // Here’s the core logic: // […]

我是否使用Web服务或HttpHandler来提供图像?

非常简单的问题..服务图像更好的是web.net服务或asp.net c#中的HttpHandler? 有什么不同 ? 为什么我更喜欢一个而不是另一个? 谢谢

完成后,Web服务中的单独线程

如果在我道歉之前已经问过这个,这是.NET 2.0 ASMX Web服务,那么我的道歉= D 仅公开Web服务的.NET应用程序。 每天大约1000万条消息在多个IIS服务器之间进行负载平衡。 每个传入的消息都是XML,传出的消息是XML。 (XMLElement)(我们有强大的服务器,运行类固醇)。 我有一个SLA,所有消息都在X秒内处理。 此过程中的一个function,链接方法,现在需要10-20秒,每个事务都需要它,但是在Web服务返回结果之前发生它并不重要。 因此,我提出了将其抛弃到另一个线程的建议,但现在意识到我的话语和他们背后的热心开发者可能还没有完全想到这一点。 以下示例在左侧显示当前流量。 在右边正在尝试什么 实际上我正在寻找的是让Web服务产生一个长期运行(10-20秒)的线程,即使在Web服务完成后也会执行该线程。 实际上,这是有效的: Thread linkThread= new Thread(delegate() { Linkmembers(GetContext(), ID1, ID2, SomeOtherThing, XMLOrSomething); }); linkThread.Start(); 使用它我们在开发盒上将时间从19秒减少到2.1秒,这是相当可观的。 我担心随着流量的增加,如果供应商/外部方决定限制我们,IIS可能会决定在完成处理之前回收/终止这些线程。 我同意我们的解决方案可能不是“最好的”但是我们没有时间在Queue系统或其他Windows服务中构建来处理这个问题。 有一个更好的方法吗? 有什么需要考虑的警告吗? 谢谢。

如何获取Web服务的状态

如何使用C#获取Web服务的状态? 是否成功完成,失败或等待这样。

访问https服务器上托管的Webservice

我正在访问一个在SSL认证的网络服务器中托管的webserivce https://www.example.net/somewebservice/somemethod.asmx 但是当我创建一个代理类并使用C#消费它时:我收到了这个错误 事件类型:错误事件源:XXXX事件类别:无事件ID:0日期:22/08/2011时间:14:15:53用户:N / A计算机:XXXX描述:System.Net.WebException:底层连接是已关闭:无法为SSL / TLS安全通道建立信任关系。 —> System.Security.Authentication.AuthenticationException:根据validation程序,远程证书无效。 System.Net.Security.SslState.StartSendSlogb上的System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken消息,AsyncProtocolRequest asyncRequest,exceptionexception)处于System.Net.Security.SslState.StartSendBlob(Byte [SystemToken消息,AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,System.Net.Security.SslState.ProcessReceivedBlob(Byte []缓冲区,Int32计数,AsyncProtocolRequest asyncRequest)中的传入,Int32计数,AsyncProtocolRequest asyncRequest), System.Net.Security.SslState.StartSendBlob上的System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest)处的System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest)上的AsyncProtocolRequest asyncRequest)( System.Net.Security.SslState.ProcessReceivedBlob(Byte []缓冲区中的字节[]传入,Int32计数,AsyncProtocolRequest asyncRequest),I 系统上System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest)的System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)中的nt32计数,AsyncProtocolRequest asyncRequest)。 System.Net.Security.SslState.ProcessReceivedBlob(Byte [])的System.Net.Security.SslState.StartSendBlob(Byte []传入,Int32计数,AsyncProtocolRequest asyncRequest)中的Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest)的System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)处的缓冲区,Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security.SslState.StartSendBlob(Byte []中的System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message,AsyncProtocolRequest asyncRequest) System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest)上的System.Net.Security.SslState.ProcessReceivedBlob(Byte []缓冲区,Int32计数,AsyncProtocolRequest asyncRequest)中的,即Int32计数,AsyncProtocolRequest […]

通过实施Web服务为Alexa托管自定义技能

我正在开发一个Web服务,用于处理Alexa发送的请求,并在.net框架中回复特定的响应。 Alexa以JSON格式向您的服务发送请求正文,如下所示: { “version”: “string”, “session”: { “new”: true, “sessionId”: “string”, “application”: { “applicationId”: “string” }, “attributes”: { “string”: {} }, “user”: { “userId”: “string”, “accessToken”: “string” } }, “context”: { “System”: { “application”: { “applicationId”: “string” }, “user”: { “userId”: “string”, “accessToken”: “string” }, “device”: { “supportedInterfaces”: { “AudioPlayer”: {} } } }, “AudioPlayer”: […]