部署webservice常见问题汇总

问题一

转自http://blog.csdn.net/xingxing513234072/article/details/38615997

处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler

开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

一.上述错误详情图:

                       

二.上述错误分析:

vs2010默认采用的是.NET 4.0框架,4.0框架是独立的CLR,和.NET 2.0的不同,如果想运行.NET 4.0框架的网站,需要用aspnet_regiis注册.NET 4.0框架,然后用.NET 4.0框架的class池,就可以运行.NET 4.0框架的web项目了。

造成上述错误的原因极有可能是:由于先安装.NetFramework v4.0后安装iis 7.5所致。

 

三.如何用aspnet_regiis注册4.0框架?

方法如下:

①找到.NET 4.0框架下aspnet_regiis所在目录,在C盘根目录中搜索aspnet_regiis,找到4.0框架下aspnet_regiis的目录位置,本人本本目录为"C:\Windows\Microsoft.NET\Framework\v4.0.30319".

 





②以管理员的身份运行DOS命令行,

执行"开始→所有程序→附件→命令提示符(右击选择'以管理员身份运行(A)')",弹出"管理员:命令提示符"窗口

③执行命令"cd C:\Windows\Microsoft.NET\Framework\v4.0.30319",进入到"C:\Windows\Microsoft.NET\Framework\v4.0.30319"目录,然后执行命令"aspnet_regiis.exe -i",注册"aspnet_regiis",稍等片刻,aspnet_regiis成功注册如图

 

看到图中的界面,就可以在IIS中运行.net4.0部署的网站喽!

问题二

转自http://www.cnblogs.com/autumn/p/3575008.html

“/”应用程序中的服务器错误。


未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。


程序集加载跟踪:下列信息有助于确定程序集“XXXXXX”未能加载的原因。

警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。


堆栈跟踪:

[BadImageFormatException: 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192
   System.Reflection.Assembly.Load(String assemblyString) +35
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +118
 
[ConfigurationErrorsException: 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11392147
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484
   System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +127
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1087
 
[HttpException (0x80004005): 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11524352
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4782309
原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题 
解决方案一:如果是64位机器,IIS——应用程序池——高级设置——启用32位应用程序 :true。


 
 
解决方案二:修改项目属性——生成——目标平台(比如,X86\X64)

问题三,隔一段时间webservice接口运行不正常

譬如调用webservice接口访问其他服务器做身份验证,隔一段时间就会失败,需要重启webservice才能恢复正常

需修改相应应用程序池的高级设置,回收的固定时间间隔和虚拟内存以及专用内存限制

 

posted @ 2017-04-19 15:45  MikeLiuHF  阅读(592)  评论(0编辑  收藏  举报