2

c#でasp.net 3.5を使用しています

私の Web アプリケーションには、SlideShow画像を含むという名前のフォルダーがあります。それぞれの URL で画像の名前を取得し、WCF を使用して JSON 形式で返したいと考えています。画像パスと画像の配列を含むjson文字列を返すメソッドを作成しました。ASP.NET 開発サーバーでアプリケーションを実行すると正常に動作しますが、IIS でエラーが発生します。

私のインターフェースは

[OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
        Stream GetSlideShowImages();

サービス方法は

   Stream Iremoteclient.GetSlideShowImages()
        {
                byte[] resultBytes = Encoding.UTF8.GetBytes(new AndroidServices().GetSlideShowImages());
                WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
                saveAndroidRequest();
                return new MemoryStream(resultBytes);
            }

        }

json文字列を取得するメソッドは

public string GetSlideShowImages()
        {
            try
            {
                string relativepath = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath;

                string pathlastchr = relativepath.Trim().Substring(relativepath.Length - 1, 1);
                if (pathlastchr == "/")
                {
                    relativepath = relativepath.Trim() + "SlideShow/";
                }
                else
                {
                    relativepath = relativepath.Trim() + "SlideShow/";
                }
                string json;
                DirectoryInfo directoryInfo = new DirectoryInfo(HttpContext.Current.Server.MapPath("/SlideShow"));
                FileInfo[] file = directoryInfo.GetFiles().Where(f => f.Extension == (".bmp") || f.Extension == (".jpg") || f.Extension == (".png") || f.Extension == (".TIFF") || f.Extension == (".gif")).ToArray();

                AndroidServices objAndroidServices = new AndroidServices();
                objAndroidServices.ImagePath = relativepath;
                objAndroidServices.Images = file.Select(f => f.Name).ToArray();


                using (MemoryStream ms = new MemoryStream())
                {
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(AndroidServices));
                    ser.WriteObject(ms, objAndroidServices);
                    json = System.Text.Encoding.UTF8.GetString(ms.GetBuffer(), 0, Convert.ToInt16(ms.Length));
                    json = json.Replace(@"\/", @"/");
                }
                return json;
            }
            catch (Exception ex)
            {                   
                return ex.Message;
            }
        }

IISでは、次のようなエラーが発生します

" System.IO.__Error.WinIOError(Int32 errorCode, String MaybeFullPath) で System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean i" および " System.Text.Encoding.GetBytes(String s) で) E:\VivifyHealth\caregiverihportal\src\service\remoteclient.svc の ihv1Role.service.remoteclient.ihv1Role.service.Iremoteclient.GetSlideShowImages() で"

解決策はありますか?

4

1 に答える 1