2017-08-11 11 views
0

を投げています。取得画像のURLは、私は次の例外を持っている例外

using (var img = System.Drawing.Image.FromFile(_pictureService.GetThumbLocalPath(picture))) 
{ 
    using (var memStream = new MemoryStream()) 
    { 
     img.Save(memStream, img.RawFormat); 
     byte[] imageBytes = memStream.ToArray(); 

     // Convert byte[] to Base64 String 
     base64String = Convert.ToBase64String(imageBytes); 
     ImageBase64 = base64String; 
    } 
} 

解決方法がわかりません。

誰でも知っている。

無効な仮想パスについて何かがあります。例外: "有効な仮想パスでないSystem.Web.Util.UrlPath.CheckValidVirtualPath(文字列のパス)での。"

フル例外:

System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.Web.HttpException (0x80004005): 'https:/mydomain.com.au/content/images/thumbs/myimage.jpeg' is not a valid virtual path. at System.Web.Util.UrlPath.CheckValidVirtualPath(String path) at System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative) at System.Web.VirtualPath.Combine(VirtualPath relativePath) at System.Web.HttpRequest.MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, Boolean allowCrossAppMapping) at System.Web.HttpServerUtility.MapPath(String path) at Nop.Plugin.Widgets.DbgEnhancements.Controllers.CatalogController.<>c__DisplayClass56_0.<DbgHomeBrands>b__2() at Nop.Core.Caching.CacheExtensions.Get[T](ICacheManager cacheManager, String key, Int32 cacheTime, Func 1取得)Nop.Core.Caching.CacheExtensions.Get [T](ICacheManagerのCacheManager、でStringKey、Func 1 acquire) at Nop.Plugin.Widgets.DbgEnhancements.Controllers.CatalogController.<DbgHomeBrands>b__56_1(Manufacturer x) at System.Linq.Enumerable.WhereSelectListIterator System.Collections.Generic.Listの2.MoveNext()1..ctor(IEnumerableコレクション)System.Linq.Enumerable.ToList [TSource](IEnumerable 1 source) at Nop.Plugin.Widgets.DbgEnhancements.Controllers.CatalogController.<DbgHomeBrands>b__56_0() at Nop.Core.Caching.CacheExtensions.Get[T](ICacheManager cacheManager, String key, Int32 cacheTime, Func 1取得)のNop.Core.Caching.CacheExtensions.Get [ T](ICacheManager cacheManager、String key、Func 1 acquire) at Nop.Plugin.Widgets.DbgEnhancements.Controllers.CatalogController.DbgHomeBrands() at lambda_method(Closure , ControllerBase , Object[]) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2つのパラメータ)をSystem.Web.Mvc.ControlActionInvoker.InvokeActionMethod(ControllerContext controllerContext、ActionDescriptor actionDescriptor、IDictionary 2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2. System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)のSystem.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()のSystem.Web.Mvc.Async.AsyncControllerActionInvokerの2.CallEndDelegate(IAsyncResult asyncResult) .AsyncInvocationWithFilters。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFiltersのc__DisplayClass46.b__3f()。 <> System.Web.Mvc.Async.AsyncControllerActionInvokerのSystem.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)のc__DisplayClass46.b__3f()。 <> c__DisplayClass21。 <> System.Web.Mvc.Async.AsyncControllerActionInvokerのc__DisplayClass2b.b__1c()。 System.Web.Mvc.AsyncでSystem.Web.Mvc.Controller.b__1d(たIAsyncResult asyncResult、ExecuteCoreState innerState)でSystem.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(たIAsyncResult asyncResult)で<> c__DisplayClass21.b__1e(たIAsyncResult asyncResult) .AsyncResultWrapper.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid System.Web.Mvc.MvcのSystem.Web.Mvc.Handler.b__5(IAsyncResult asyncResult、ProcessRequestState innerState)のSystem.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)の1.CallEndDelegate(IAsyncResult asyncResult)。 System.Web.HttpServerUtility.ExecuteInternal(IHttpHandlerハンドラ、TextWriterライタ、ブールpreserveForm、ブールsetPreviousPage、VirtualPathパス、VirtualPathファイルパス、文字列の物理パス、例外エラー、文字列queryStringOverride)でSystem.Web.Async.SAsyncResultWrapper.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass4.<Wrap>b__3() at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func 1 func)。 HttpServerUtility.ExecuteInternal(IHttpHandlerハンドラ、TextWriterライタ、Boolean preserveForm、Bo System.Web.HttpServerUtility.Execute(IHttpHandlerハンドラ、TextWriterライタ、ブールpreserveForm、ブールsetPreviousPage)でSystem.Web.HttpServerUtility.Execute(IHttpHandlerハンドラ、Booleanパス、VirtualPathファイルパス、StringPathPathPath、例外エラー、文字列queryStringOverride) 、TextWriter writer、Boolean preserveForm)をSystem.Web.Mvc.Html.ChildActionExtensionsに配置します。ASP._Page_Views_Widget_WidgetsByZone_cshtml.Execute()のSystem.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper、String actionName、String controllerName、RouteValueDictionary routeValues)のActionHelper(HtmlHelper htmlHelper、String actionName、String controllerName、RouteValueDictionary routeValues、TextWriter textWriter) C:\のinetpub \バーチャルホスト\ snowys-livecubeテスト\ウィジェット\ WidgetsByZone.cshtml \回数:5行目System.Web.Mvc.WebViewPage.ExecutePageHierarchyでSystem.Web.WebPages.WebPageBase.ExecutePageHierarchy()()のシステムでSystem.Web.Mvc.ControlActionInvoker.InvokeActionResultFilterRecursiveのSystem.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContextコンテキスト)の.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriterライター、WebPageRenderingBase startPage)(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListフィルタ1個、Int32 filterIndex 、ResultExecutingContext preContext、ControllerContextControllerContext、ActionResult actionResult)System.Web.Mvc .ControllerActionInvoker.InvokeActionResultFilterRecursive(IListの1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1フィルタ、のInt32 FilterIndexは、ResultExecutingContext preContext、ControllerContext controllerContext、のActionResultのActionResult)System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListの1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1フィルタ、のInt32 FilterIndexは、ResultExecutingContext preContext、ControllerContext controllerContext、のActionResultのActionResult)でSystem.Web.Mvc.ControlActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListフィルタ、Int32 filterIndex、ResultExecutingContextContContext、ControllerContextControllerContext、ActionResult actionResult)でSystem.Web.Mvc.ControlActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IListフィルタ、ActionResult actionResult)のシステムで。 Web.Mvc.Async.AsyncControllerActionInvoker。 System.Web.Mvc.AsyncでSystem.Web.Mvc.Controller.b__1d(たIAsyncResult asyncResult、ExecuteCoreState innerState)でSystem.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(たIAsyncResult asyncResult)で<> c__DisplayClass21.b__1e(たIAsyncResult asyncResult) .AsyncResultWrapper.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid System.Web.Mvc.MvcのSystem.Web.Mvc.Handler.b__5(IAsyncResult asyncResult、ProcessRequestState innerState)のSystem.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)の1.CallEndDelegate(IAsyncResult asyncResult)。 System.Web.HttpServerUtility.ExecuteInternal(IHttpHandlerハンドラ、TextWriterライタ、ブールpreserveForm、ブールsetPreviousPage、VirtualPathパス、VirtualPathファイルパス、文字列の物理パス、例外エラー、文字列queryStringOverride)でSystem.Web.Async.SAsyncResultWrapper.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass4.<Wrap>b__3() at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func 1 func)。 HttpServerUtility.ExecuteInternal(IHttpHandlerハンドラ、TextWriterライタ、Boolean preserveForm、Bo System.Web.HttpServerUtility.Execute(IHttpHandlerハンドラ、TextWriterライタ、ブールpreserveForm、ブールsetPreviousPage)でSystem.Web.HttpServerUtility.Execute(IHttpHandlerハンドラ、Booleanパス、VirtualPathファイルパス、StringPathPathPath、例外エラー、文字列queryStringOverride) 、TextWriterライター、ブールpreserveForm)System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper、String actionName、String controllerName、RouteValueDictionary routeValues、TextWriter textWriter)System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper C:\ inetpub \ vhosts \ snowysのASP._Page_Themes_Snowys_Views_Home_Index_cshtml.Execute()のNop.Web.Framework.HtmlExtensions.Widget(HtmlHelperヘルパー、String widgetZone、Object additionalData、String area)のString actionName、String controllerName、RouteValueDictionary routeValues) -livecube-test \ Themes \ Snowys \ Views \ Home \ Index.cshtml:System.Web.WebPages.WebPageBase.ExecutePageHの36行目System.Web.Mvc.WebViewPage.ExecutePageHierarchy()でのierarchy()System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriterライター、WebPageRenderingBase startPage) System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListの1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1つのフィルタ、のInt32 FilterIndexは、ResultExecutingContext preContext、ControllerContext controllerContext、のActionResultのActionResult)System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursiveで(のIList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1つのフィルタ、のInt32 FilterIndexは、ResultExecutingContext preContext、ControllerContext System.Web.Mvc.Mvc.ControlActionInvoker.InvokeActionResultFilterRecursive(System.Web.Mvの1つのフィルタ、Int32 filterIndex、ResultExecutingContextのpreContext、ControllerContextのcontrollerContext、ActionResultのactionResult)でのSystem.Web.Mvc.ControlContext、ActionResultのactionResult c.ControllerActionInvoker。System.Web.Mvc.Async.AsyncControllerActionInvokerのInvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IListフィルタ、Int32 filterIndex、ResultExecutingContextのpreContext、ControllerContextControllerContext、ActionResult actionResult)をSystem.Web.Mvc.ControlActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IListフィルタ1個、ActionResult actionResult)に作成します。 System.Web.Mvc.AsyncでSystem.Web.Mvc.Controller.b__1d(たIAsyncResult asyncResult、ExecuteCoreState innerState)でSystem.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(たIAsyncResult asyncResult)で<> c__DisplayClass21.b__1e(たIAsyncResult asyncResult) .AsyncResultWrapper.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid System.Web.Mvc.MvcのSystem.Web.Mvc.Handler.b__5(IAsyncResult asyncResult、ProcessRequestState innerState)のSystem.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)の1.CallEndDelegate(IAsyncResult asyncResult)。それは今働いているので、1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

歓声

+0

あなたの 'GetThumbLocalPath()'メソッドとは何ですか? (つまり例外がスローされます)。そして、「絵」の価値は何ですか? –

+0

画像の値は画像 'content/images/thumbs/myimage.jpg'へのuriパスです。GetThumbLocalPath()はnopcommerceに組み込まれています。 –

+0

@WebDevGuy:' System.Drawing.Image.FromFile'にはあなたのディレクトリの仮想パス。 'System.Drawing.Image.FromFile(Server.MapPath(_pictureService.GetThumbLocalPath(picture))、true);のように変更する必要があります。 ' –

答えて

0

[OK]をAsync.AsyncResultWrapper.WrappedAsyncVoid。

nopcommerce画像モデルで作業するので、このようなbase64画像を生成できます。

base64String = Convert.ToBase64String(picture.PictureBinary); 

助けてくれてありがとう、これは他の誰かに役立つことを願っています。

関連する問題