运行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? p>
答案 0 :(得分:0)
使用Get()
API使用?QueryString
发送请求,这是 requestPathInvalidCharacters 正在验证的内容。
当您使用Send()
时,您通过HTTP POST发送JSV序列化请求DTO,而该POST不会被requestPathInvalidCharacters验证。
除了使用Web.config之外,没有什么方法可以禁用ASP.NET的默认行为,请注意,在请求到达ServiceStack之前,这种验证会在ASP.NET中发生。