WCF - 奇怪的错误

时间:2011-08-02 05:22:57

标签: wcf iis-6 wshttpbinding

我的IIS使用wsHttpBinding托管了我的dll。我有这个奇怪的错误发生在中间。

好吧,当我重置IIS(iisreset)时,一切都会恢复正常。

我也读了这个http://msdn.microsoft.com/en-us/library/ee517280.aspx。但我不确定这与此有关。如果您有关于此的更多信息,请指导我。感谢。

  服务器错误。      

未提供所需的模拟级别,或者   提供的模拟级别无效。 (HRESULT的例外情况:   0x80070542)描述:期间发生了未处理的异常   执行当前的Web请求。请查看堆栈跟踪   有关错误及其来源的更多信息   码。

     

异常详细信息:System.Runtime.InteropServices.COMException:要么   未提供所需的模拟级别或提供的模拟级别   模仿级别无效。 (来自HRESULT的异常:0x80070542)

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[COMException(0x80070542):要求的模拟级别是   未提供,或提供的模拟级别无效。   (HRESULT异常:0x80070542)]

     

[FileLoadException:无法加载文件或程序集   'System.ServiceModel,Version = 4.0.0.0,Culture = neutral,   PublicKeyToken = b77a5c561934e089'或其依赖项之一。要么a   未提供所需的假冒级别或提供的   模仿级别无效。 (HRESULT异常:0x80070542)]   System.ServiceModel.Activation.HttpModule.ProcessRequest(对象   发件人,EventArgs e)+0
  System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +148 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously)+75

2 个答案:

答案 0 :(得分:1)

看起来你正试图在IIS6中运行.NET 4.0 Framework,这很棘手according to this post.我自己没试过。您获得的异常实际上是因为您的进程尝试加载System.ServiceModel版本4.0 DLL失败。虽然该帖子适用于ASP.NET,但它适用于WCF,因为ASP.NET是IIS6中的服务主机进程。这是另一个question along the same lines,有一些很好的答案。

答案 1 :(得分:1)

(由原始海报回答,但在错误的地方,由我感动。)

大家好,我终于在我的客户端应用程序代码中添加了这两行来解决我自己的问题:

    WindowsClientCredential wsCred = wsFactory.Credentials.Windows;
    wsCred.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;

此2行强制客户端每次连接时都会模拟。