Visual Studio 2012安装破坏了我的2010 WCF项目
我已经安装了VS 2012,并在一些web项目上成功地使用了它,但它的某些问题导致我的web服务项目崩溃。我仍然在web服务项目上使用VS2010,并且在2012年还没有打开它 一切都可以正确编译和工作,除非它尝试在我引用的weblog项目中创建类的实例,然后抛出以下错误: 调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性 我在项目中找不到明确使用GetBufferlessInputStream的任何地方 如果跳过weblog代码,一切都会正确执行 我找不到任何其他收到这个错误的人来尝试缩小它的范围,有什么想法从哪里开始 堆栈Visual Studio 2012安装破坏了我的2010 WCF项目,wcf,visual-studio-2012,runtime-error,Wcf,Visual Studio 2012,Runtime Error,我已经安装了VS 2012,并在一些web项目上成功地使用了它,但它的某些问题导致我的web服务项目崩溃。我仍然在web服务项目上使用VS2010,并且在2012年还没有打开它 一切都可以正确编译和工作,除非它尝试在我引用的weblog项目中创建类的实例,然后抛出以下错误: 调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性 我在项目中找不到明确使用GetBufferlessInputStream的任何地方 如果跳过weblog代码,一切都会正确执行
at System.Web.HttpRequest.get_InputStream()
at OAS.Web.Log.WebEvent..ctor(EventType type, HttpContext context, String applicationName)
at OAS.Web.Log.WebTrace..ctor(HttpContext context, String applicationName)
at OAS.Web.AdvisorServices.Extensions.OperationLoggerParameterInspector.BeforeCall(String operationName, Object[] inputs) in C:\SourceControl\OAS\IM.NET3.0\Web\AdvisorServices\OAS.Web.AdvisorServices.Extensions\OperationLogger\OperationLoggerParameterInspector.cs:line 54
**编辑-奖金问题
为什么这些Framework 4.5属性会影响我的4.0解决方案?注意:此问题已在.net 4.5.1中修复。您可以看到4.5.1中的修复。拥有.net 4.5.1后,添加以下appSetting以切换回旧行为
<configuration>
<appSettings>
<add key="wcf:serviceHostingEnvironment:useClassicReadEntityBodyMode" value="true" />
</appSettings>
</configuration>
设置中添加这些行,在web.config中注册此模块
<system.webServer>
<modules>
<!-- Register the managed module -->
<add name="WcfReadEntityBodyModeWorkaroundModule" type="MyAssembly.WcfReadEntityBodyModeWorkaroundModule, MyAssembly" />
</modules>
<system.web>
<httpModules>
<add name="WcfReadEntityBodyModeWorkaroundModule" type="MyAssembly.WcfReadEntityBodyModeWorkaroundModule, MyAssembly" />
</httpModules>
现在尝试访问该服务,它将为您成功 我想是的,但是。。。你“清洗”了你的解决方案吗?只是清洗和重建,没有变化。一个微软的家伙在这里有一个答案,但现在它不见了。我说我应该尝试创建一个HttpModule,在调用WCF模块之前调用get_InputStream,它会强制ReadEntityBodyMode属性为classic而不是none,但我不确定如何强制我的模块在WCF模块之前被命中。另外,我不想这样做,但请看。简短回答:.NET 4.5是一个就地升级,实际上修复了.NET 4.0中的错误。我来自WCF产品团队,希望得到澄清,但找不到添加注释的方法,因此在此处作为答案进行回应。我们很高兴该解决方案对您有效,但我们也想知道这对客户有多普遍。为了评估这一点,您能否告诉我,您使用的代码是您正在使用的第三方组件,还是您在项目中使用的一些自定义代码。另外,这个日志代码在您遇到这个问题的地方到底做了什么?谢谢。@DustinBrooks你好Dustin,我来自Microsoft.NET Framework团队。我们希望更好地了解您的场景,我们正在考虑在即将发布的更新中解决任何问题。您可以通过Microsoft.com联系我们netfx45compat吗--Varun Gupta(来自微软.NET框架团队)今天这救了我一命。谢谢我不知道为什么,但这对我不起作用。我复制了WcfReadEntityBodyModeWorkaroundModule代码,并将模块配置添加到web.config。ReadEntityBodyMode仍然是无缓冲区的。我用的是4.5。还有别的吗?谢谢你的解决方案。这对我有用。看来这个问题现在已经解决了。
<system.web>
<httpModules>
<add name="WcfReadEntityBodyModeWorkaroundModule" type="MyAssembly.WcfReadEntityBodyModeWorkaroundModule, MyAssembly" />
</httpModules>