2012-07-05 21 views
22

我们有一个正在被MVC3网站访问的WCF服务(没有安全性)。第一次从MVC站点访问WCF服务返回“请求的服务”...'无法激活“

在开发人员机器上我们没有任何问题,但是当我们的TeamCity安装程序构建中央版本并在IIS7下部署时,我们首次加载MVC3站点并访问WCF服务 - 服务调用返回消息:

System.ServiceModel.ServiceActivationException:所请求的服务'http:// localhost:83/ABCStaticData/StaticDataService.svc'无法激活。请参阅服务器的诊断跟踪日志以获取更多信息。**

如果我们立即再次访问同一站点,一切正常。

时抛出的错误是服务器堆栈跟踪:

服务器堆栈跟踪:

at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory1 factory, WebException responseException, ChannelBinding channelBinding) 
at System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) 
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout 
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
at ABC.StaticData.Editor.StaticDataServiceProxy.IStaticDataService.GetAllMarkets() 
at ABC.StaticData.Editor.StaticDataServiceProxy.StaticDataServiceClient.GetAllMarkets() in c:\BuildAgent\work\55a3bcc468adcccb\StaticData\ABC.StaticData.Editor\Service References\StaticDataServiceProxy\Reference.cs:line 3195 
at ABC.StaticData.Editor.Controllers.MarketsController.<>c__DisplayClass22.<.ctor>b__13() in c:\BuildAgent\work\55a3bcc468adcccb\StaticData\ABC.StaticData.Editor\Controllers\MarketsController.cs:line 263 
at ABC.StaticData.Editor.Controllers.MarketsController.Index() in c:\BuildAgent\work\55a3bcc468adcccb\StaticData\ABC.StaticData.Editor\Controllers\MarketsController.cs:line 306 

没有人有可能会造成什么问题,或者从哪里开始寻找任何想法?

更新:我忘了提到第一个,如果我们不访问网站一段时间,然后回去,它会给出同样的错误 - 然后再次工作。

UPDATE2:这是事件日志项文本:

WebHost failed to process a request. 
Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/3043589 
Exception: System.ServiceModel.ServiceActivationException: The service '/ABCStaticData/StaticDataService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not load type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.. ---> System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.AsyncStateMachineAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 
    at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) 
    at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) 
    at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) 
    at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) 
    at System.Reflection.CustomAttribute.IsCustomAttributeDefined(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Boolean mustBeInheritable) 
    at System.Reflection.CustomAttribute.IsDefined(RuntimeMethodInfo method, RuntimeType caType, Boolean inherit) 
    at System.Reflection.RuntimeMethodInfo.IsDefined(Type attributeType, Boolean inherit) 
    at Ninject.Infrastructure.Language.ExtensionsForMemberInfo.HasAttribute(MemberInfo member, Type type) 
    at Ninject.Selection.Heuristics.StandardInjectionHeuristic.ShouldInject(MemberInfo member) 
    at Ninject.Selection.Selector.<>c__DisplayClassa.<SelectMethodsForInjection>b__9(IInjectionHeuristic h) 
    at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) 
    at Ninject.Selection.Selector.<SelectMethodsForInjection>b__8(MethodInfo m) 
    at System.Linq.Enumerable.WhereArrayIterator`1.MoveNext() 
    at Ninject.Planning.Strategies.MethodReflectionStrategy.Execute(IPlan plan) 
    at Ninject.Planning.Planner.<>c__DisplayClass1.<CreateNewPlan>b__0(IPlanningStrategy s) 
    at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable`1 series, Action`1 action) 
    at Ninject.Planning.Planner.CreateNewPlan(Type type) 
    at Ninject.Planning.Planner.GetPlan(Type type) 
    at Ninject.Activation.Providers.StandardProvider.Create(IContext context) 
    at Ninject.Activation.Context.Resolve() 
    at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) 
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
    at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) 
    at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) 
    at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) 
    at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) 
    at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
    at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
    at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) 
    at Ninject.Activation.Providers.StandardProvider.Create(IContext context) 
    at Ninject.Activation.Context.Resolve() 
    at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) 
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
    at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) 
    at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) 
    at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) 
    at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) 
    at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) 
    at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
    at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
    at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) 
    at Ninject.Activation.Providers.StandardProvider.Create(IContext context) 
    at Ninject.Activation.Context.Resolve() 
    at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) 
    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 
    at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) 
    at Ninject.Extensions.Wcf.BaseNinjectServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
    at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) 
    at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) 
    at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) 
    at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) 
    --- End of inner exception stack trace --- 
    at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) 
    at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity) 
Process Name: w3wp 
Process ID: 3248 

只是我们正在使用.NET 4.5和Visual Studio 2012 RC开发的另一点。

+0

什么是内部异常? – abatishchev 2012-07-05 11:42:02

+0

没有内在的例外。 – trembler2003 2012-07-05 13:45:48

+0

你确定吗?什么是适当的事件日志条目文本? – abatishchev 2012-07-05 13:57:45

回答

0

是否在IIS下注册了.svc扩展名?

有关更多详细信息,请参阅MSDN

+0

猜测是因为它第二次加载。是快速发布我的答案。抱歉! – Jocke 2012-07-05 11:47:41

2

我碰到了相同的“无法加载类型'System.Runtime.CompilerServices.AsyncStateMachineAttribute'”,我发现是因为我用VS 2012 RTM构建了我的应用程序,但随后尝试将它部署到只有4.5 Beta的机器。 AsyncStateMachineAttribute是Beta之后添加的新类型。

23

我刚刚设法解决类似的随机'System.ServiceModel.ServiceActivationException'问题(引发异常,然后运行第二次命中。)。在我的例子中,例外的原因是服务器上缺少内存。要确认内存问题,您可以执行以下操作:

应用程序调用Web服务:

System.ServiceModel.ServiceActivationException: The requested service, 'XXX' could not be activated. See the server's diagnostic trace logs for more information. 

Server stack trace: 
    at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding) 
    at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 
    at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

WCF跟踪日志:记录无关。

在服务器托管WCF服务(同BTW调用应用程序)在事件日志中,除了大量的垃圾信息,我发现:

自定义事件详细信息:

WebHost failed to process a request. 
Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/58366981 
Exception: System.ServiceModel.ServiceActivationException: The service 'xxx' cannot be activated due to an exception during compilation. The exception message is: Memory gates checking failed because the free memory (xxx bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.. ---> System.InsufficientMemoryException: Memory gates checking failed because the free memory (xxx bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element. 

所以解决方案我是: 1.添加更多内存 2。释放一些RAM的(临时解决方案)的Web服务的 3.更新web配置:

<configuration> 
    <system.serviceModel> 
    <serviceHostingEnvironment ... minFreeMemoryPercentageToActivateService="0" /> 
    </system.serviceModel> 
</configuration> 
+0

太棒了,RAM也是我的问题! – 2016-01-18 09:11:49

+1

#1对我来说是不可行的(官僚障碍)。尝试#3,至少现在,像魅力一样工作。非常感谢! :) – Quester 2017-02-15 12:36:33

0

我有这样的问题太多,我所做的是:

  • 转到目录文件中服务所在
  • 系统,你将有2个文件的服务
    • yourService.svc
    • yourService.svc.cs
  • 打开文件yourService.svc,并确保您的服务配置,后面的代码如下所示:

    <%@ ServiceHost Language="C#" Debug="true" Service="YourNamespace.yourService.svc" CodeBehind="yourService.svc.cs" %> 
    

我固定我的问题的方式。我希望它有帮助!

11

我有这个问题太,只是简单地把

<serviceHostingEnvironment minFreeMemoryPercentageToActivateService="1"> 

<system.serviceModel>

,一切工作正常。

+0

minFreeMemoryPercentageToActivateService =“1” – Jagd 2017-02-09 18:38:10

+0

您的'serviceHostingEnvironment'标记未关闭,它应以'/>'而不是'>'结尾。 – SharpC 2017-10-16 14:43:37

-1

每当我遇到同样的问题时,我重新启动计算机并运行良好。它释放内存

+1

每次发生此错误时我们都无法重新启动PC。不是吗? – Irshad 2015-08-10 05:24:34

+0

我同意你的意见,我们不能每天重新启动它。已经用尽了所有上述建议,仍然无效。我们忘记了一个简单的事实,即机器运行几周后需要重新启动才能释放资源。 Microsoft建议: “定期重新启动 至少每周重新启动一次您的PC,尤其是在您使用它很多时,尤其是在清除其内存并确保启动时运行的任何错误进程和服务关闭下。” http://windows.microsoft.com/en-US/windows7/optimize-Windows-7-for-better-performance?72a92270 – LapelCard 2015-08-10 06:20:14

0

检查您正在托管服务的服务器的内存未满。