4

Visual Studio 2012 .Net 4.5 を使用する開発ワークステーションで完全に機能するこのソリューションがあります。IIS の変更はありません。基本的に、Web ページを取得して bmp に変換するのは C# です。ファイルシステムに書き込もうとしていることが問題なのかどうかはわかりません。

これは私が Azure で得たものです。そして、私はそれがAzureの制限/制限である可能性があることを読んでいます(そうであれば非常に失望しています)

502 - ゲートウェイまたはプロキシ サーバーとして機能しているときに、Web サーバーが無効な応答を受信しました。

私はこのコードで私の問題を理解しています:

 public Bitmap GenerateThumbnail()
    {
        Thread thread = new Thread(new ThreadStart(GenerateThumbnailInteral));
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
        thread.Join();
        return ThumbnailImage;
    }
    private void GenerateThumbnailInteral()
    {
        WebBrowser webBrowser = new WebBrowser();
        webBrowser.ScrollBarsEnabled = false;
        if (this.Method == ThumbnailMethod.Url)
            webBrowser.Navigate(this.Url);
        else webBrowser.DocumentText = this.Html;
        webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
        while (webBrowser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
        webBrowser.Dispose();
    }

またはおそらく image.save を使用します(これは次に問題になる可能性があります)。

image.Save(Server.MapPath("~") + "/output/"+filename);

私たちは低予算で、ホストされたサイトをシンプルで安価に保つよう努めています. ワーカー プロセスを構築したり、Azure のストレージ機能を使用したりする必要はありません。

===

アップデート:

私の問題は保存ではないと思いますが、Azure の問題になると思います。さらに、テストとして、画像ストリームを html img タグに返すハンドラー ashx を作成しました。これもローカルではうまく機能しますが、Azure では赤い X が表示されます。それがどうしたのかわからない。

4

1 に答える 1

3

基本的に、Azure で割り当てずにローカル ディレクトリに書き込む権限はありません。

しかし、その問題には多くの解決策があります。

起動タスクをセットアップして、ディレクトリにアクセス許可を割り当てます。これを読む価値があります。 WindowsAzure: web.config 内でディレクトリのアクセス許可を設定することは可能ですか?

一時ローカル ドライブが必要な場合は、これが推奨される方法です。

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

永続的なストレージが必要な場合は、Blob ストレージが最適です。

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/

VHD のようにコンピューティングにドライブを接続することもできますが、2 つのコンピューティングがそのドライブに同時に書き込むことができるかどうかはわかりません。データを保持する必要がある場合は、ブロブ ストレージを使用することをお勧めします。

BLOB ストレージは非常に安価です。

ジェームスさん

于 2013-05-12T13:56:32.923 に答える