2017-08-11 63 views
0

我有以下异常:System.Web.HttpException(0X80004005)获取图像的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, String key,Func 1 acquire) at Nop.Plugin.Widgets.DbgEnhancements.Controllers.CatalogController.<DbgHomeBrands>b__56_1(Manufacturer x) at System.Linq.Enumerable.WhereSelectListIterator 2.MoveNext()at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)at 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 acquire)at 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 parameters)at System.Web.Mvc.ControllerActionInvoker.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 System.Web.Mvc.Async.AsyncControllerActionInvoker上System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)上2.CallEndDelegate(IAsyncResult asyncResult) .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.AsyncInvocationWithFilters。在System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)上System_Web.Mvc.Async.AsyncControllerActionInvoker上的c__DisplayClass46.b__3f()。 <> c__DisplayClass21。 <> c__DisplayClass2b.b__1c()在System.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 1. System.Web.Mvc上的System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)上的System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult,ProcessRequestState innerState)上的CallEndDelegate(IAsyncResult asyncResult)在System.Web上System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler处理程序,TextWriter作家,布尔preserveForm,布尔setPreviousPage,VirtualPath路径,VirtualPath文件路径,字符串physPath,异常错误,字符串queryStringOverride)Async.AsyncResultWrapper.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作家,布尔preserveForm,博在System.Web.HttpServerUtility.Execute(IHttpHandler处理程序(IHttpHandler处理程序,TextWriter作家,布尔preserveForm,布尔setPreviousPage) ,TextWriter作家,布尔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 \ vhosts \ snowys-livecube-test \ Views \ Widget \ WidgetsByZone.cshtml中:第5行System.Web.WebPages.WebPageBase.ExecutePageHierarchy()System.Web.Mvc.WebViewPage.ExecutePageHierarchy()at System .Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters,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.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.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1 filters,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 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,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 1. System.Web.Mvc上的System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)上的System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult,ProcessRequestState innerState)上的CallEndDelegate(IAsyncResult asyncResult)在System.Web上System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler处理程序,TextWriter作家,布尔preserveForm,布尔setPreviousPage,VirtualPath路径,VirtualPath文件路径,字符串physPath,异常错误,字符串queryStringOverride)Async.AsyncResultWrapper.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作家,布尔preserveForm,博在System.Web.HttpServerUtility.Execute(IHttpHandler处理程序(IHttpHandler处理程序,TextWriter作家,布尔preserveForm,布尔setPreviousPage) ,TextWriter作家,布尔preserveForm)在System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper,字符串actionName,字符串controllerName,RouteValueDictionary routeValues,TextWriter textWriter)在System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper ,字符串actionName,字符串controllerName,RouteValueDictionary routeValues)在ASP.Page_Themes_Snowys_Views_Home_Index_cshtml.Execute()在C:\ inetpub \ vhosts \ snowys Nop.Web.Framework.HtmlExtensions.Widget(HtmlHelper助手,字符串widgetZone,对象additionalData,字符串区域) -livecube-test \ Themes \ Snowys \ Views \ Home \ Index.cshtml:第36行,位于System.Web.WebPages.WebPageBase.ExecutePageH在System.Web.Mvc.WebViewPage.ExecutePageHierarchy()System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)上的System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext上下文)处的ierarchy() System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult)at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult)上的控制器上下文,控制器上下文,ActionResult actionResult) c.ControllerActionInvoker。InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult)at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1 filters,ActionResult actionResult)at System.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 1. System.Web.Mvc上的System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)上的System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult,ProcessRequestState innerState)上的CallEndDelegate(IAsyncResult asyncResult) Async.AsyncResultWrapper.WrappedAsyncVoid 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

图片的价值是一个uri路径图像'content/images/thumbs/myimage.jpg''GetThumbLocalPath()'内置于nopcommerce我认为 –

+0

@WebDevGuy:'System.Drawing.Image.FromFile'需要一个你的目录的虚拟路径。你需要改变它像这样:'System.Drawing.Image.FromFile(Server.MapPath(_pictureService.GetThumbLocalPath(picture)),true); ' –

回答

0

好了,所以它的工作现在。

使用nopcommerce图片模型,我可以生成像这样的base64图像。

base64String = Convert.ToBase64String(picture.PictureBinary); 

感谢您的帮助,希望这可以帮助别人。