将.NET 4 WCF服务定位为64位的问题

时间:2010-11-11 11:38:21

标签: wcf iis .net-4.0 64-bit cassini

我遇到的问题是将.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

2 个答案:

答案 0 :(得分:4)

我认为解决这个问题的原因是Cassini Web主机是32位应用程序,因此您无法在同一进程内共享x64和x86运行时。

对于IIS,您是否在自己的应用程序池中运行它?应用程序池可以再次与32位应用程序共享,这将阻止您运行x64进程。如果您将虚拟目录与新的应用程序池关联,则该进程应加载正常。

答案 1 :(得分:0)

作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。