我有一个小型的Web应用程序.哪个工作正常,直到我在我的应用程序中添加了两个genericHandler.
我对http处理程序进行了以下更改
<system.web>
<authentication mode="Forms" >
<forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<!--Code Log Handler-->
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
<add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
<add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
</httpHandlers>
<customErrors mode="Off">
<error statusCode="404" redirect="Templates/PageNotFound.html" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<!--Code Log Handler-->
<add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
<!-- SMS SENDER-->
<add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
</handlers>
</system.webServer>
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我使用的是asp.net4.0和C#.我没有使用MVC
在本地主机上它工作正常.
但是当我托管发布的代码时,它给了我上面的错误.
堆栈跟踪:-
[FileNotFoundException:无法加载文件或程序集'Microsoft.Web.Infrastructure,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.系统找不到指定的文件.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register()+ 0
[InvalidOperationException:预应用程序启动初始化方法Start类型System.Web.Http.WebHost.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'Microsoft.Web.Infrastructure,Version = 1.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项.系统找不到指定的文件..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)+11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods()+465 System.Web.Hosting.HostingEnvironment.Initialize( ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLeve
[HttpException(0x80004005):预应用程序启动初始化方法Start类型System.Web.Http.WebHost.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'Microsoft.Web.Infrastructure,Version = 1.0 .0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.系统找不到指定的文件..] System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11697760 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context) 4866485
roc*_*kyb 193
看来,Microsoft.Web.Infrastructure.dll没有被安装在GAC中,即使.NET(4.0或4.5或其他)在Windows Server上安装成功.在localhost(通常是Windows客户端)上,当安装工具/平台(Visual Studio等)时,它似乎就在GAC中.
作为一种可能的解决方案,请尝试以下方法:
在程序包管理器控制台中运行以下命令.(如果您使用的是Visual Studio,可以通过菜单选项"工具 - >库包管理器 - >包管理器控制台:)来访问它
PM> Install-Package Microsoft.Web.Infrastructure
Run Code Online (Sandbox Code Playgroud)
如果成功安装,您将看到以下消息.
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
Run Code Online (Sandbox Code Playgroud)您会注意到Microsoft.Web.Infrastructure.dll现已添加为参考(可在解决方案资源管理器中的项目的references文件夹中看到)
如果查看此引用的属性,您会注意到默认情况下" 复制本地 "已设置为" True ".
现在当您"发布"您的项目时,将部署Microsoft.Web.Infrastructure.dll.
Gle*_*don 12
我有同样的问题.当我尝试接受的答案(rockyb)时,我得到的消息是该软件包已经安装并分配给我的项目.但是当我检查引用列表时,它没有被引用.
Microsoft.Web.Infrastructure安装在我的解决方案的packages文件夹中.我没有使用NuGet来添加包,而是使用了Add Reference选项.在弹出窗口的左侧,我选择了"浏览",然后按下窗口底部的"浏览"按钮.我导航到我的解决方案所在的文件夹下的packages文件夹,然后深入到...\mysolution\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib \net40并单击Microsoft.Web.Infrastructure .dll文件.单击"确定"后,包将显示在"参考"列表中.我使用Web Deploy Package选项来部署我的网站,一切正常.
为什么不手动将Microsoft.Web.Infrastructure.dll文件复制到服务器BIN文件夹.这适用于.我的项目是VS2010网站.
该文件可以找到:
C:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.Web.Infrastructure.1.0.0.0\lib \net40
只需将其复制并粘贴到BIN文件夹中即可.
如果您还没有,可能需要在web.config中包含它
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
Run Code Online (Sandbox Code Playgroud)
参考:http://thedeveloperblog.com/
我发现了这个问题.(.cs)
我没有添加类文件,而是添加了Web API Controller
一个在我的解决方案中添加了配置文件的类.该配置文件正在寻找提到的DLL(Microsoft.Web.Infrastructure 1.0.0.0).当我删除该文件,清理应用程序然后发布时,它工作.
小智 5
通过安装Microsoft.Web.Infrastructure后 Nuget-Package Manager
PM> Install-Package Microsoft.Web.Infrastructure
Run Code Online (Sandbox Code Playgroud)
Microsoft.Web.Infrastructure.dll
从Nuget-Package
Web应用程序上的文件夹手动复制,然后将其粘贴到Web服务器上部署的Web应用程序的bin文件夹中.
包\ Microsoft.Web.Infrastructure.1.0.0.0\LIB \net40\Microsoft.Web.Infrastructure.dll
它对我有用.
归档时间: |
|
查看次数: |
155126 次 |
最近记录: |