2012-08-13 67 views
1

我有一个使用响应筛选器将数据验证消息添加到我们的服务的服务堆服务器。我的Put/Post处理程序返回一个HttpResult对象,并将Response设置为我们的验证对象。响应过滤器然后将这个对象分解成一个原始的html字符串,它将Response对象设置为。为了得到这个工作,我必须在“视图”中创建一个String.md文件以及一个空白的html模板文件。我目前看到的问题是,当我们的自定义HTML响应包含一个逗号“” fromater尝试序列串并抛出一个异常JSV:如何在响应过滤器中禁用某些请求的jsv格式器?

at System.String.get_Chars(Int32 index) 
    at ServiceStack.Text.Jsv.JsvTypeSerializer.EatMapKey(String value, Int32& i) 
    at ServiceStack.Text.Common.DeserializeDictionary`1.ParseStringDictionary(String value) 
    at ServiceStack.Text.Jsv.JsvReader`1.Parse(String value) 
    at ServiceStack.Text.TypeSerializer.DeserializeFromString[T](String value) 
    at ServiceStack.Html.ViewDataDictionary.PopulateModelState() 
    at ServiceStack.Html.HtmlHelper.Init(IViewEngine viewEngine, ViewDataDictionary viewData) 
    at ServiceStack.Html.HtmlHelper.Init(MarkdownPage markdownPage, Dictionary`2 scopeArgs, Boolean renderHtml, ViewDataDictionary viewData) 
    at ServiceStack.Markdown.MarkdownViewBase.Init(IAppHost appHost, MarkdownPage markdownPage, Dictionary`2 scopeArgs, Object model, Boolean renderHtml) 
    at ServiceStack.WebHost.Endpoints.Support.Markdown.MarkdownPage.Write(TextWriter textWriter, PageContext pageContext) 
    at ServiceStack.WebHost.Endpoints.Support.Markdown.TemplateExtensions.RenderToString(MarkdownPage markdownPage, Dictionary`2 scopeArgs, Boolean renderHtml) 
    at ServiceStack.WebHost.Endpoints.Formats.MarkdownFormat.RenderDynamicPage(MarkdownPage markdownPage, Dictionary`2 scopeArgs, Boolean renderHtml, Boolean renderTemplate) 
    at ServiceStack.WebHost.Endpoints.Formats.MarkdownFormat.RenderDynamicPage(MarkdownPage markdownPage, String pageName, Object model, Boolean renderHtml, Boolean renderTemplate) 
    at ServiceStack.WebHost.Endpoints.Formats.MarkdownFormat.ProcessMarkdownPage(IHttpRequest httpReq, MarkdownPage markdownPage, Object dto, IHttpResponse httpRes) 
    at ServiceStack.WebHost.Endpoints.Formats.MarkdownFormat.<Register>b__1(IRequestContext requestContext, Object dto, IHttpResponse httpRes) 
    at ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.<>c__DisplayClass1.<SerializeToStream>b__0(StreamSerializerResolverDelegate x) 
    at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source, Func`2 predicate) 
    at ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.SerializeToStream(IRequestContext requestContext, Object dto, IHttpResponse httpRes) 
    at ServiceStack.Common.Web.HttpResponseFilter.SerializeToStream(IRequestContext requestContext, Object response, Stream responseStream) in i:\GitHub\ServiceStack\src\ServiceStack.Common\Web\HttpResponseFilter.cs:line 152 
    at ServiceStack.Common.Web.HttpResult.WriteTo(Stream responseStream) in i:\GitHub\ServiceStack\src\ServiceStack.Common\Web\HttpResult.cs:line 219 
    at ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToOutputStream(IHttpResponse response, Object result, Byte[] bodyPrefix, Byte[] bodySuffix) 
    at ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse response, Object result, ResponseSerializerDelegate defaultAction, IRequestContext serializerCtx, Byte[] bodyPrefix, Byte[] bodySuffix) 

我国的问题是如何能够把JSV关闭这些回应?还是有更好的方式来返回原始的HTML?我不能让我的请求处理程序返回一个字符串,因为我需要控制返回的响应代码和头文件。

回答

相关问题