0

ASP.NET MVC 4 でビルドした API Web というライブ Web サイトがあります。このアプリケーションは、他の Web サイトに JavaScript ファイルを提供するためのものです。JavaScript を要求する 20 の Web サイトがあります。

しかし、この API Web がダウンすることがあり、アプリケーションを再び稼働させるのに苦労します。なぜこれが起こるのかわかりません。どうすればこの問題を解決できますか?

編集

これはコントローラーです。パスを要求する Web サイトがhttp://api.example.com/get/js/folderA?js=jquery.jsである場合 、アプリケーションは JavaScript コンテンツを返します。ただし、要求している Web サイトの読み込みは遅くなります。また、API Web に要求が多すぎると、ダウンする可能性があると思います (ボトルネックの問題)。

public ActionResult js(string id, string js) {
            string fileLocation = Server.MapPath("~/content/" + id + "/js/" + CryptKeys.Decrypt(js) + "");

            string contentType = "text/javascript";
            var file = System.IO.File.Open(fileLocation, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            var stream = (Stream)(file);

            return new FileStreamResult(stream, contentType);

        }
4

1 に答える 1

0

クラスによって開かれたファイルストリームを閉じていないSystem.IO.File.Open可能性があり、例外をスローして同じファイルを返す次の呼び出しにつながる可能性があります。また、例外が処理されないため、最終的にサイトがシャットダウンされる可能性があります。

イベント ビューアでエラー ログを確認しましたか?

以下の入力に基づいて、このコードを試していただけますか? using追加したブロックに注目してください

public ActionResult js(string id, string js) {
        string fileLocation = Server.MapPath("~/content/" + id + "/js/" + CryptKeys.Decrypt(js) + "");

        string contentType = "text/javascript";
        using(var file = System.IO.File.Open(fileLocation, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        {
            var stream = (Stream)(file);

            return new FileStreamResult(stream, contentType);
        }

    }
于 2012-11-12T19:54:40.667 に答える