JsvServiceClient.get上的错误请求,但不是JsvServiceClient.send

时间:2015-11-10 23:16:46

标签: c# servicestack

运行ServiceStack 4.0.44我的测试客户端上有以下内容:

return client.Send(new GetVendor { VenCode = vencode });

与我的相比

// return client.Get(new GetVendor { VenCode = vencode });

然后在我有/

的服务器上
public class VendorsService : Service {

    public object Any(GetVendor request) {
        var vendor = Db.SingleWhere<Vendors>("VenCode", request.VenCode);
        return vendor;
    }
    //public object Get(GetVendor request) {
    //    var vendor = Db.SingleWhere<Vendors>("VenCode", request.VenCode);
    //    return vendor;
    //}

}

//[Route("/vendor/{VenCode}", "GET")]
[Route("/vendor/{VenCode}")]
public class GetVendor : IReturn<Vendors> {
    public string VenCode { get; set; }
}
public class Vendors {
    :
    :
}

我的问题是为什么当我通过&#34; B&amp; T&#34;对于VenCode - 我理解IIS正在解释&amp;作为URL的一部分 - 为什么发送工作和返回供应商 - 但除非我把

搞砸了坏请求
<httpRuntime requestPathInvalidCharacters="" />

进入我的web.config

底线有什么区别?如何在不修改注册表等的情况下使用所有html特殊字符实现CRUD例程?或者我是否需要以某种方式对它们进行urlEncode?

1 个答案:

答案 0 :(得分:0)

使用Get() API使用?QueryString发送请求,这是 requestPathInvalidCharacters 正在验证的内容。

当您使用Send()时,您通过HTTP POST发送JSV序列化请求DTO,而该POST不会被requestPathInvalidCharacters验证。

除了使用Web.config之外,没有什么方法可以禁用ASP.NET的默认行为,请注意,在请求到达ServiceStack之前,这种验证会在ASP.NET中发生。