問題タブ [virtualpathprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1468 参照

asp.net - HostingEnvironment.VirtualPathProvider.FileExists は、既存のファイルに対して false を返します

次のコードを使用して、仮想パスでファイルを読み込もうとしています

_SiteMapFileNameには「~/Content/en-US/MainMenu.sitemap」のようなものがあり、常に返されfalseます。

しかし、その仮想パスの URL ( http://www.local.mysite.com/Content/en-US/MainMenu.sitemap ) にアクセスすると、ファイルはブラウザーに正しく表示されます。

Contentは、私の Web サイトの下にある仮想ディレクトリであり、別の場所にある共有フォルダーを指しています。Windows エクスプローラーでその場所にアクセスすると、ファイルを正しく表示できます

サイトと仮想ディレクトリをネットワーク アカウントとして接続するように設定しました。

プロセス監視ツールを使用して問題があるかどうかを確認したところ、w3wp.exe がファイル \path\to\shared\location\Content\en-US\MainMenu.sitemapを作成しようとしているが、 ACCESS DENIEDに​​なっていると表示されます。読み取り専用の場所なので問題ありません

この問題を解決する方法はありますか?

0 投票する
1 に答える
820 参照

asp.net - カスタム VirtualPathProvider のトラブルシューティング

ASP.NET Web アプリケーション用にカスタマイズした VirtualPathProvider を作成しました。基本的に、「~/Storage」とサブディレクトリ内のすべての仮想ファイルを、ソリューションのディレクトリ以外のディレクトリにマップします。

コードの要点

私の場合VirtualRootPath = "~/Storage"、それは設定可能です。

問題

IIS Express で Visual Studio を介してデバッグすると、仮想パスを解決するために必要な 2 つのパブリック メソッドが常に呼び出されるとは限りません。

  • 呼び出すhttp://localhost:7749/Storageと、両方のメソッドでブレークポイントがトリガーされます。404 エラーが返されます。これは私にとって正しい行動です
  • 呼び出しhttp://localhost:7749/Storage/ExistingFile.txtてもデバッグはトリガーされず、別の 404 エラーが返されます。これは正しくありません

2 つの 404 エラーの違いは、ディレクトリを呼び出すと ASP.NETServer error in application '/'が応答する ( ) のに対し、そのディレクトリ内のファイルを呼び出すと IIS 8.0 が応答する ( HTTP Error 404.0 - Not Found) ことです。

質問

を に正しく登録したとしても、VirtualPathProviderIIS HostingEnvironment8.0 では ASP.NET パイプラインが HTTP 要求を処理しないため、正しく解決できないのはなぜですか?

回避策

VirtualPathProvider does not (quite) work in production on IIS 7.5を読んだ後、それが問題になる可能性があることに気付きましたWeb.config。他の質問から判断すると、ASP.NET がそれらを仮想リソース、コントローラー、またはその他にマップするかどうかに関係なく、IIS は特定のファイル拡張子を個別に処理するようです。つまり、XML ファイル (おそらく JPEG ではない) を読み込もうとしていたので、IIS は ASP.NET を気にしませんでした。

回避策として、次の行をWeb.configsystem.webServer.handlersセクションに追加しました:

ただし、この回避策は XML ファイルに対してのみ機能します。ストレージ ディレクトリの下のすべてのファイルに対して機能する永続的な修正を行うにはどうすればよいですか?

0 投票する
1 に答える
408 参照

asp.net - SharePoint - VirtualPathProvider: FeatureReceiver 内に登録する

SharePoint 2010/2013 (サーバーおよびファウンデーション) の VirtualPathProvider を実装しようとしています。これまでのところSystem.Web.Hosting.VirtualPathProviderSystem.Web.Hosting.VirtualFileとのサブクラスを実装しましSystem.Web.Hosting.VirtualDirectoryた。

FeatureReceiverクラスで機能を使用して、新しい VPP を HostingEnvironment に登録したいと考えていました。しかし、私はラインを実装したので

HostingEnvironment.RegisterVirtualPathProvider(new MyVPProvider());

メソッドに追加するFeatureActivatedと、VisualStudio のデバッグ デプロイは次のエラーで失敗します。

Error occurred in deployment step 'Activate Features': Operation is not valid due to the current state of the object.

何が間違っているのかわかりません。FeatureReceiverVPP を登録する場所が間違っているのではないでしょうか?

チュートリアルまたは例を既に Web で検索しましたが、適切なものが見つかりませんでした。SharePoint 用の VirtualPathProvider を開発する方法についてのヒントをいただければ幸いです。前もって感謝します。

--

ロバート・フォーゲル

0 投票する
1 に答える
321 参照

c# - VirtualPathProvider のいくつかのメソッドをオーバーライドする

ASP.Net MVC Web アプリケーションのデフォルトで実装されているVirtualPathProviderを使用したいと考えています。

つまり、デフォルトの Asp.net VirtualPathProvider から独自の VirtualPathProvider を継承し、GetCacheKeyメソッドをオーバーライドするだけです。

私は何をすべきか?

誰でも助けることができますか?

乾杯