我在.Net 4.5.2框架中使用HttpClient类.我正在对第三方Web服务进行PostAsync.这篇文章80%的时间都在工作,20%的时间我们的回复被缩短了.在这种情况下,我们得到以下异常:
System.Net.Http.HttpRequestException:将内容复制到流时出错.---> System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接.---> System.Net.Sockets.SocketException:远程主机在System.Net.Sockets.NetworkStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象状态)强制关闭现有连接---内部异常堆栈跟踪的结束---在System.Net.FixedSizeReader.StartReading()的System.Net.Sockets.NetworkStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象状态)在System.Net.Security._SslStream.StartFrameHeader(字节[]缓冲液,的Int32偏移的Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security._SslStream.StartReading(字节[]缓冲液,的Int32偏移的Int32计数,
随后的相同请求成功.这不是我们可以重新设置的请求,因为已经放置了业务.所以它让我们处于一种尴尬的境地.
这是我的代码:
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = authorizationHeader;
HttpContent httpContent = new StringContent(someXml);
//Exception occurs on next line...
var response = await httpClient.PostAsync("https://thirdpartyendpoint", httpContent);
var responseXml = await response.Content.ReadAsStringAsync();
//convert to Dto
}
Run Code Online (Sandbox Code Playgroud)
第三方服务成功地将记录保存到他们的数据库中,并且在他们的结尾没有看到任何明显的例外.他们确实注意到,写入数据库的失败请求通常需要比成功请求更长的时间(大约18-30秒).
谢谢您的帮助
我正在使用Service Bus for Windows Service 1.0(客户端引用Microsoft.ServiceBus.dll 1.8.0.0)
我试图让WCF客户端和服务NetMessagingBinding示例工作.
我只想向服务总线提交一条消息,并将其输出到我的wcf服务中.
目前我提交时遇到问题,因为它无法找到令牌提供程序:
我有以下代码:
private const string Issuer = "myIssuerName";
private const string Key = "BBBBBB=";
private static readonly Uri ServiceBusEndpointAddress =
new Uri("{sb://servicebusdefaultnamespace.servicebus.windows.net/Orders/}");
private static void Main(string[] args)
{
//SetUp
var binding = new NetMessagingBinding();
var contract = ContractDescription.GetContract(typeof (IOrderService), typeof (OrderService));
var transportBehavior = new TransportClientEndpointBehavior();
transportBehavior.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(Issuer, Key);
var endpoint = new ServiceEndpoint(contract, binding,
new EndpointAddress(ServiceBusEndpointAddress.AbsoluteUri));
endpoint.Behaviors.Add(transportBehavior);
var host = new ServiceHost(typeof (OrderService), ServiceBusEndpointAddress);
host.AddServiceEndpoint(endpoint);
host.Open();
//send message to …
Run Code Online (Sandbox Code Playgroud) 我正在研究一种使用助焊剂和反应的简单原型.以前当我使用React时,我已经将子组件中的事件发送到其父组件(已在子组件上注册了prop回调),然后在父组件中更改了状态.
遵循Flux架构是否应通过Dispatcher提升所有事件?例如,即使是一个简单的用户事件,例如选中复选框,也应通过此链引发:
谢谢
在我的System.Web.Mvc Action过滤器中,我以前使用TempData来存储我的unitOfWork服务的实例,如下所示:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.TempData[UnitOfWorkRequestKey] = UnitOfWork;
UnitOfWork.Begin();
}
Run Code Online (Sandbox Code Playgroud)
然后提交事务我从像这样的临时数据中检索它.
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var unitOfWork = (IUnitOfWork)filterContext.Controller.TempData[UnitOfWorkRequestKey];
try
{
if (filterContext.Exception == null)
{
unitOfWork.Complete();
}
}
finally
{
unitOfWork.Dispose();
filterContext.Controller.TempData[UnitOfWorkRequestKey] = null;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
在System.Web.Http
Web Api Action Filter(使用HttpActionContext
)中 - 是否有一个等效的位置来存储我的服务实例,所以我可以在执行该操作时检索相同的实例?
我必须在C#中实现流程图结构.我将数据传递给第一个节点,它将检查一些数据项(布尔值),然后将数据路由到两个后续节点之一,依此类推.
基本逻辑流程如下:
节点1
节点2
节点3
等等
我一直在关注责任链模式,它最初似乎解决了我的问题.但是,在我的大多数节点(处理程序)中,我需要有2个后续节点(真实路径和错误路径)才能进行调用.
看一下CoR模式的实现,似乎有一个NextHandler(Next Node)的概念,但不是NextHandlerA和NextHandlerB的概念.
因此,如果不是CoR哪种模式更适合解决这个问题.规则和顺序可能经常变化.
谢谢你的时间.
我正在使用SimpleInjector 2.2.3.0.
我有一个MVC 4.0项目,并使用我的命令周围的装饰模式来管理我的UnitOfWork和我的授权.我有授权的装饰师 - IAuthorisationDecorator
.这包裹了我的所有ITransactionalCommandHandlers
.(每个ITransactionalCommandHandler
也都装饰着IUnitOfWorkDecorator
.)授权装饰器如下所示:
public void Handle(TCommand command)
{
//authorise this command for this Iprincipal
decoratedCommandHandler.Handle(command);
}
Run Code Online (Sandbox Code Playgroud)
我现在想要创建一个INonTransactionalCommandHandler
(不需要NHibernate会话,它只是做一些文件IO).注意INonTransactionalCommandHandler
和ITransactionalCommandHandler
继承ICommandHandler
- 看起来像这样:
public interface ICommandHandler<in TCommand, out TResult>
{
TResult Result { get; }
void Handle(TCommand command);
}
Run Code Online (Sandbox Code Playgroud)
我真的不想创建两个相同的AuthorisationDecorators
(事务性/非事务性).因为最终它们装饰了一个基础ICommandHandler
(实现为a ITransactional
或INonTransactional
).
所以我的问题是 - 有没有办法创建一个装饰基础的装饰器ICommandHandler
- 但是容器知道要把它投射ICommandHandler
到一个ITransactionalCommandHandler
或一个INonTransactionalCommandHandler
.有没有办法做到这一点?
c# ×4
.net ×1
asp.net ×1
azure ×1
c#-4.0 ×1
flux ×1
javascript ×1
reactjs ×1
reactjs-flux ×1
servicebus ×1
wcf ×1