IIS配置WCF浏览SVC报HTTP 404.3-Not Found错误及未能加载文件或程序集"Oracle.ManagedDataAccess"或它的某一个依赖项等错误的解决方法 IIS站点配置WCF完成,进行浏览器中浏览时,报错:HTTP错误404.3-Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加MIME映射。 解决步骤如下:
经查询网上有解决方案如下:
1、IIS程序安装问题。
解决步骤如下:
"%windir%Microsoft.NETFrameworkv3.0Windows Communication FoundationServiceModelReg.exe" -r -y
-r - 重新安装此版本的 Windows Communication Foundation,
并更新 IIS 元数据库根处的脚本映射和根以下的所有
脚本映射。无论原始版本是什么,都将现有的脚本映射
升级到此版本。
-y - 在卸载或重新安装组件之前不要求确认。
原因:这是因为先安装了 .NET Framework 4,随后启用了 .NET Framework 3.5 WCF HTTP 激活,则会发生此错误。
解决办法:
微软官方对该问题也作了解答:http://msdn.microsoft.com/zh-cn/library/aa751852.aspx
只需要已管理员用户在cmd中运行 C:WindowsMicrosoft.NETFrameworkv4.0.30319>aspnet_regiis.exe -i -enable 即可。
3、浏览SVC,如果报如下错误(未能加载文件或程序集"Oracle.ManagedDataAccess"或它的某一个依赖项):
原因:这是因为先未安装了 ODP.NET(Oracle驱动),则会发生此错误。
解决办法:安装 Oracle 全托管驱动(推荐使用oracle.ManagedDataAccess.dll(oracle.ManagedDataAccess.Client)全托管驱动。实际使用发现,Oracle全托管驱动对32位和64位oracle数据库具有很好的连接兼容性)
另外,Web.config文件配置好:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </configSections> <oracle.manageddataaccess.client> <version number="4.121.2.0"> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb"/> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </providers> </entityFramework> </configuration>
"%windir%Microsoft.NETFrameworkv3.0Windows Communication FoundationServiceModelReg.exe" -r -y
-r - 重新安装此版本的 Windows Communication Foundation,
并更新 IIS 元数据库根处的脚本映射和根以下的所有
脚本映射。无论原始版本是什么,都将现有的脚本映射
升级到此版本。
-y - 在卸载或重新安装组件之前不要求确认。
原因:这是因为先安装了 .NET Framework 4,随后启用了 .NET Framework 3.5 WCF HTTP 激活,则会发生此错误。
解决办法:
微软官方对该问题也作了解答:http://msdn.microsoft.com/zh-cn/library/aa751852.aspx
只需要已管理员用户在cmd中运行 C:WindowsMicrosoft.NETFrameworkv4.0.30319>aspnet_regiis.exe -i -enable 即可。
3、浏览SVC,如果报如下错误(未能加载文件或程序集"Oracle.ManagedDataAccess"或它的某一个依赖项):
原因:这是因为先未安装了 ODP.NET(Oracle驱动),则会发生此错误。
解决办法:安装 Oracle 全托管驱动(推荐使用oracle.ManagedDataAccess.dll(oracle.ManagedDataAccess.Client)全托管驱动。实际使用发现,Oracle全托管驱动对32位和64位oracle数据库具有很好的连接兼容性)
另外,Web.config文件配置好:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </configSections> <oracle.manageddataaccess.client> <version number="4.121.2.0"> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb"/> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </providers> </entityFramework> </configuration>