92

私は小さなWebアプリケーションを持っています。アプリケーションに2つの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.

asp.net4.0 と C# を使用しています。 ローカル ホストで MVC を使用していませんが、正常に動作しています。 しかし、公開されたコードをホストしていると、上記のエラーが発生します。

スタックトレース:-

[FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register() +0

[InvalidOperationException: System.Web.Http.WebHost.PreApplicationStartCode 型のアプリケーション開始前の初期化メソッド Start は、次のエラー メッセージで例外をスローしました: ファイルまたはアセンブリを読み込めませんでした 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral、PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つ。指定されたファイルが見つかりません..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 メソッド) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods() +465 System.Web.Hosting.HostingEnvironment.Initialize( ApplicationManager appManager、IApplicationHost appHost、IConfigMapPathFactory configMapPathFactory、HostingEnvironmentParameters、hostingParameters、PolicyLevel policyLeve

[HttpException (0x80004005): System.Web.Http.WebHost.PreApplicationStartCode 型のアプリケーション開始前の初期化メソッド Start は、次のエラー メッセージで例外をスローしました: ファイルまたはアセンブリを読み込めませんでした 'Microsoft.Web.Infrastructure, Version=1.0 .0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません..] System.Web.HttpRuntime.FirstRequestInit(HttpContext コンテキスト) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext コンテキスト) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext コンテキスト) +4866485

4

14 に答える 14

198

.net(4.0または4.5など)がWindows Serverに正常にインストールされている場合でも、Microsoft.Web.Infrastructure.dllがGACにインストールされていないようですローカルホスト(通常はWindowsクライアント)では、ツール/プラットフォーム(Visual Studioなど)がインストールされている場合、GACにあるように見えます。

考えられる解決策の1つとして、次のことを試してください。

  1. パッケージマネージャーコンソールで次のコマンドを実行します。(Visual Studioを使用している場合は、メニューオプション[ツール]->[ライブラリパッケージマネージャー]->[パッケージマネージャーコンソール]からアクセスできます:)

    PM> Install-Package Microsoft.Web.Infrastructure
    

    正常にインストールされると、次のメッセージが表示されます。

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
    
  2. Microsoft.Web.Infrastructure.dllが参照として追加されたことに気付くでしょう(ソリューションエクスプローラーのプロジェクトの参照フォルダーに表示されます)

  3. このリファレンスのプロパティを見ると、「ローカルコピー」がデフォルトで「True」に設定されていることがわかります。

  4. これで、プロジェクトを「公開」すると、Microsoft.Web.Infrastructure.dllが展開されます。

于 2012-10-02T01:33:36.143 に答える
19

WPI経由でMVC4をインストールしましたが、役に立ちました。

于 2012-12-21T04:24:13.627 に答える
9

Microsoft.Web.Infrastructure.dll ファイルをサーバーの BIN フォルダーに手動でコピーしないでください。これは機能します。私のプロジェクトはVS2010 Webサイトです。

このファイルは次の場所にあります。

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>

参考:http ://thedeveloperblog.com/

于 2016-04-22T06:08:55.743 に答える
6

問題が見つかりました。(.cs)誤ってクラス ファイルを追加する代わりにWeb API Controller、ソリューションに構成ファイルを追加するクラスを追加しました。そして、その構成ファイルは、前述の DLL (Microsoft.Web.Infrastructure 1.0.0.0) を探していました。そのファイルを削除し、アプリケーションをクリーンアップしてから公開すると機能しました。

于 2012-10-03T05:25:02.733 に答える
5

Microsoft.Web.Infrastructure をインストールした後Nuget-Package Manager

PM> Install-Package Microsoft.Web.Infrastructure

Microsoft.Web.Infrastructure.dllWeb アプリケーションのフォルダーから手動でコピーNuget-Packageし、Web サーバーにデプロイされた Web アプリケーションの bin フォルダーに貼り付けます。

packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll

それは私のために働いた。

于 2016-02-04T15:52:20.117 に答える
0

Was facing the same issue and unfortunately nothing here was working. Finally, I came across this link: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

Turns out the solution is sort of dumb: set copy-local for the microsoft.web.infrastructure dll to False, then set it back to True.

By the way, I think what is happening is that there are two versions of the microsoft.web.infrastructure dll, one that is pre-installed in the GAC, and another one that is now a nuget package. I think one is masking the other, hence causing issues. In my particular case, on my build server, I need it to be copied over to a folder (this folder is then zipped and sent off to deployment). I guess the system had a copy locally and just thought "nah, it'll be fine"

于 2017-11-21T17:26:29.777 に答える
0

一連の NuGet パッケージをアップグレードした後、同じ問題が発生しました。
ここで説明されているあらゆる種類の削除、クリーニング、レジンタリングを試しましたが、役に立ちませんでした。NuGet マネージャーが Microsoft.Web.Infrastructure がインストールされていることを示していたにもかかわらず、参照には Microsoft.Web.Infrastructure がありませんでした。

この問題は、次のものを置き換えることで解決されました。

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />

packages.config で。犯人は明らかに「net45」です。

于 2019-02-16T02:56:28.080 に答える