1

画像を受け入れるための Web サービスを作成する最良の方法は何ですか。画像は非常に大きい可能性があり、Web アプリケーションのデフォルトの受信サイズを変更したくありません。私はバイナリ イメージを受け入れるものを書きましたが、より良い代替手段が必要だと感じています。

4

2 に答える 2

4

この画像はどこに「住んでいる」のですか?ローカルファイルシステムまたはWebでアクセスできますか?その場合は、WebサービスでURI(URLまたはローカルファイルの場合があります)を受け入れ、それをStreamとして開き、StreamReaderを使用してその内容を読み取ることをお勧めします。

例(ただし、FaultExceptionsで例外をラップし、FaultContractAttributesを追加します):

using System.Drawing;
using System.IO;
using System.Net;
using System.Net.Sockets;

[OperationContract]
public void FetchImage(Uri url)
{
    // Validate url

    if (url == null)
    {
        throw new ArgumentNullException(url);
    }

    // If the service doesn't know how to resolve relative URI paths

    /*if (!uri.IsAbsoluteUri)
    {
        throw new ArgumentException("Must be absolute.", url);
    }*/

    // Download and load the image

    Image image = new Func<Bitmap>(() =>
    {
        try
        {
            using (WebClient downloader = new WebClient())
            {
                return new Bitmap(downloader.OpenRead(url));
            }
        }
        catch (ArgumentException exception)
        {
            throw new ResourceNotImageException(url, exception);
        }
        catch (WebException exception)
        {
            throw new ImageDownloadFailedException(url, exception);
        }

        // IOException and SocketException are not wrapped by WebException :(            

        catch (IOException exception)
        {
            throw new ImageDownloadFailedException(url, exception);
        }
        catch (SocketException exception)
        {
            throw new ImageDownloadFailedException(url, exception);
        }
    })();

    // Do something with image

}
于 2008-09-19T19:41:55.683 に答える
0

FTP を使用してイメージをサーバーにアップロードし、それが完了すると、サーバー (および WCF サービス) バンは簡単にアクセスできませんか? そうすれば、受信サイズの設定などを考える必要はありません。

少なくとも、私はそうしました。

于 2010-04-06T07:10:37.863 に答える