首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStack NullReferenceException

ServiceStack NullReferenceException
EN

Stack Overflow用户
提问于 2013-06-07 06:17:38
回答 1查看 727关注 0票数 1

我对servicestack是个新手,我真的很喜欢它,但是我不知道为什么会发生这种情况。

代码语言:javascript
复制
I have mapped it as ROUTES.Add<images>("/Images"); in the APPHOST.cs

我使用Rest控制台(chrome插件)来测试和发布以下JSON:(我知道它不是实际的base64编码)。

任何想法都将不胜感激。

代码语言:javascript
复制
  //  Testing JSON
        {"base64Encoding":"asdasdasdasd"}
  //

   using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ServiceStack.ServiceInterface;
using RewoServiceLayer.RequestDTOs;
using System.Data.Entity;
using ServiceStack.ServiceInterface.ServiceModel;
using ServiceStack.Configuration;
using ServiceStack.Common;
using ServiceStack.ServiceHost;
using ServiceStack.ServiceInterface.Auth;
using ServiceStack.WebHost.Endpoints;
using System.IO;
using System.Web.Hosting;

namespace Blah.Services
{

    public class ImageResponse
    {
        public images image { get; set; }
        public ResponseStatus ResponseStatus { get; set; } //Where Exceptions get auto-serialized 
    }

    public class ImageRequest
    {
        public String base64Encoding;
    }

    public class ImageService : Service
    {
        //Give me something that looks like this: 
        //"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG4...YII=";
        public ImageResponse Post(ImageRequest request)
        {
            String base64EncodingImg = request.base64Encoding;
            using (var db = new BlahDB())
            {
                //save to db
                images imgToSave = new images();
                //get base64
                string base64 = base64EncodingImg.Substring(base64EncodingImg.IndexOf(',') + 1);
                base64 = base64.Trim('\0');
                byte[] imgBinData = Convert.FromBase64String(base64);
                //get the 
                imgToSave.image_type = base64EncodingImg.Substring(0,base64EncodingImg.IndexOf(','));
                db.images.Add(imgToSave);
                db.SaveChanges();
                //then save string contents to disk using ID
                imgToSave.image_disk_loc = getPathFromImage(imgToSave);
                writeByteArrToDisk(imgBinData, imgToSave.image_disk_loc);
                db.SaveChanges();

                ImageResponse imgResponse = new ImageResponse();
                imgResponse.image = imgToSave;
                return imgResponse;
            }
        }
        private Boolean writeByteArrToDisk(byte[] toWrite, String path)
        {
            try
            {
                File.WriteAllBytes(path, toWrite);
                return true;
            }
            catch (Exception e)
            {

                return false;
            }
        }

        private String getAbsolutePathToImagesFolder()
        {
            return HostingEnvironment.MapPath(@"~/App_Data/UploadedImages");
        }

        private String getPathFromImage(images imgModel)
        {
            if (imgModel.image_disk_loc.IsNullOrEmpty())
            {
                return getAbsolutePathToImagesFolder() + imgModel.image_id;
            }
            else
            {
                return imgModel.image_disk_loc;
            }
        }
    }



}

我得到以下错误,并且在我调试时它没有命中Post方法:

代码语言:javascript
复制
{
    "responseStatus": {
        "errorCode": "NullReferenceException",
        "message": "Object reference not set to an instance of an object.",
        "stackTrace": "   at ServiceStack.WebHost.Endpoints.Utils.FilterAttributeCache.GetRequestFilterAttributes(Type requestDtoType)\r\n   at ServiceStack.WebHost.Endpoints.EndpointHost.ApplyRequestFilters(IHttpRequest httpReq, IHttpResponse httpRes, Object requestDto)\r\n   at ServiceStack.WebHost.Endpoints.RestHandler.ProcessRequest(IHttpRequest httpReq, IHttpResponse httpRes, String operationName)"
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-07 14:19:17

我看不到您的images类,但我认为您需要更改

代码语言:javascript
复制
ROUTES.Add<images>("/Images");

代码语言:javascript
复制
ROUTES.Add<ImageRequest>("/Images")

因为您的ImageService上的帖子正在查找类型为ImageRequest的请求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16973161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档