我正在调用一个web api服务,该服务仅在我第一次回收应用程序池时失败.之后所有通话都运转正常.
这个过程是这样的..
呼叫服务 – >好的
呼叫服务 – >好的
呼叫服务 – >好的
转到iis并回收应用程序池(我等待10秒)
呼叫服务 – >发生内部服务器错误.请稍后再试.
呼叫服务 – >好的
呼叫服务 – >好的
呼叫服务 – >好的
…
转到iis并回收应用程序池(我等待10秒)
呼叫服务 – >发生内部服务器错误.请稍后再试.
呼叫服务 – >好的
呼叫服务 – >好的
呼叫服务 – >好的
…
客户端是使用此方法的控制台应用程序框架4.0:
public static object Send(string webAddr,object param) { HttpUtil.IgnoreBadCertificates(); HttpWebRequest request = null; object result = null; request = (HttpWebRequest)WebRequest.Create(webAddr); request.ContentType = "application/json; charset=utf-8"; request.Method = "POST"; request.Accept = "application/json"; String u = GetString(a1); String p = GetString(a1) + GetString(a2); String encoded = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(u + ":" + p)); request.Headers.Add("Authorization","Basic " + encoded); using (var streamWriter = new StreamWriter(request.GetRequestStream())) { var myJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(param); streamWriter.Write(myJsonString); streamWriter.Flush(); } var response = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(response.GetResponseStream())) { result = streamReader.ReadToEnd(); } return result; }
webapi是框架4.5:
public class CambiosController : BaseApiController { private ICambioService cambioService; public CambiosController(ICambioService cambioService) { this.cambioService = cambioService; } [HttpPost] [Authorize] public HttpResponseMessage Post([FromBody] CambioRequest cambioRequest) { HttpResponseMessage response = null; if (cambioRequest == null) { Exception ex = new ArgumentException("cambioRequest"); return Request.CreateErrorResponse(HttpStatusCode.BadRequest,ex); } try { var result = this.cambioService.EnviarConfiguracion(cambioRequest); response = Request.CreateResponse(HttpStatusCode.OK,result); } catch (Exception ex) { response = Request.CreateErrorResponse(HttpStatusCode.InternalServerError,ex); } return response; } protected override void dispose(bool disposing) { if (disposing) { this.cambioService.dispose(); } base.dispose(disposing); }
Unity配置:
public static void RegisterComponents() { LoggerFacility.Debug(string.Empty,string.Empty,"UnityConfig.RegisterComponents()"); var container = new UnityContainer(); container.RegisterTypes( AllClasses.FromAssemblies(BuildManager.GetReferencedAssemblies().Cast<Assembly>()) .Where(x => x.Name != "IUnitOfWork" && x.Name != "IDbContext"),WithMappings.FromMatchingInterface,WithName.Default,overwriteExistingMappings: true); container.RegisterType<IUnitOfWork,UnitOfWork>(new PerResolveLifetimeManager()); container.RegisterType<IDbContext,ControlConfigContext>(new PerResolveLifetimeManager()); GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container); }
WebApi应用程序池是框架4集成模式,作为网络服务运行. ProcessModel空闲超时(分钟0)唯一的配置已从默认值更改. IIS 7.5
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。