我遇到的问题是将.NET 4 WCF服务定位为64位。我在64位Vista操作系统上执行以下步骤:
在Visual Studio 2010中创建一个新的WCF服务项目。
将平台目标更改为x64。
执行此操作后,我的WCF服务将不再在Cassini或IIS中运行。需要注意的是,采取这些相同的操作并针对.NET 3.5一切正常。该项目没有问题。任何帮助非常感谢。我在加载服务时遇到的错误是:
(我不是在寻找“将其编译为任何CPU”的答案。我更想知道为什么会发生这种情况。: - ))
>'/'应用程序中的服务器错误。 无法找到作为ServiceHost指令中的Service属性值提供的类型'WcfService3.Service1',或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供的类型'WcfService3.Service1'。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。异常详细信息:System.InvalidOperationException:类型为“WcfService3.Service1”,在ServiceHost指令中作为Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[InvalidOperationException:类型'WcfService3.Service1',作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。找不到。 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString,Uri [] baseAddresses)+51902 System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath)+1440 System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath)+44 System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)+615
[ServiceActivationException:由于编译期间发生异常,无法激活服务'/Service1.svc'。异常消息是:类型'WcfService3.Service1',作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供,但无法找到..] System.Runtime.AsyncResult.End(IAsyncResult result)+679246 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)+190 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context,String routeServiceVirtualPath,Boolean flowContext,Boolean ensureWFService)+234 System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender,EventArgs e)+355 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+75
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1
答案 0 :(得分:4)
我认为解决这个问题的原因是Cassini Web主机是32位应用程序,因此您无法在同一进程内共享x64和x86运行时。
对于IIS,您是否在自己的应用程序池中运行它?应用程序池可以再次与32位应用程序共享,这将阻止您运行x64进程。如果您将虚拟目录与新的应用程序池关联,则该进程应加载正常。
答案 1 :(得分:0)
作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。