我们在Nancy的默认模型绑定器上遇到了问题.鉴于以下......
public class Foo
{
public Foo()
{
}
public string Name { get; set; }
public Bar Bar { get; set; }
}
public class Bar
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
像......这样的元素
<input type="text" value="Name" />
<input type="text" value="Bar.Name" />
Run Code Online (Sandbox Code Playgroud)
使用默认模型绑定器如此...
var foo = this.Bind<Foo>();
这正确绑定Foo.Name但无法绑定Foo.Bar.Name
有没有办法使用默认绑定器启用这种绑定,还是我们需要自己滚动?若有,那么有什么好例子吗?
我需要从Request.Headers集合中获取一些自定义(shibboleth)标头值.目前我正在使用以下代码执行此操作:
CommonName = Request.Headers["cn"].FirstOrDefault();
Email = Request.Headers["mail"].FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
是否有一个不那么繁琐的语法来获取标题值?我希望看到一个动态的物体,如Query或Form所以我可以使用动态属性名称,像这样:
CommonName = Request.Headers.cn;
Email = Request.Headers.mail;
Run Code Online (Sandbox Code Playgroud)
谢谢.
我是南希的菜鸟.我一直在使用它作为生成REST API的框架.我熟悉Json.NET所以我一直在玩这个Nancy.Serialization.JsonNet包.
我的目标:自定义行为(即更改设置)的JsonNetSerializer和JsonNetBodyDeserializer.
具体来说,我想加入以下设置......
var settings = new JsonSerializerSettings { Formatting = Formatting.Indented };
settings.Converters.Add( new StringEnumConverter { AllowIntegerValues = false, CamelCaseText = true } );
Run Code Online (Sandbox Code Playgroud)
我想使用内置的TinyIoC容器来执行此自定义,以避免继承链并限制Nancy.Serialization.JsonNet包中任何更改引起的潜在问题.
注意:作为临时解决方法,我利用继承来创建CustomJsonNetSerializer和CustomJsonNetBodyDeserializer.
我已经尝试了几种方法来合并这种配置至少为JsonNetSerializer.我还没有尝试配置JsonNetBodyDeserializer使用TinyIoC.我想它会以同样的方式完成.我尝试过的所有工作都在我的CustomNancyBootstrapper(继承自DefaultNancyBootstrapper).
到目前为止最成功的方法:覆盖 ConfigureApplicationContainer
protected override void ConfigureApplicationContainer( TinyIoCContainer container )
{
base.ConfigureApplicationContainer( container );
// probably don't need both registrations, and I've tried only keeping one or the other
var settings = …Run Code Online (Sandbox Code Playgroud) 根据这个答案,在MVC Razor中这样做的方法是@Request.RawUrl,@Request.Url.ToString()或@Request.Url.AbsoluteUri.
在我的剃刀页面上,ReSharper解析@Request为using @Nancy,我找不到HttpRequestBase.RawUrl的实例.
如何从Nancy服务模板中获取RawUrl?
我已经开始在自主模式下测试Nancy了.到目前为止,除了一个令我烦恼的问题之外,还有这么好:我如何防止它在开发过程中缓存我的观点?
我确实注意到一个注释,视图缓存应该在调试模式下被禁用,但它似乎对我不起作用 - 每当我对HTML进行更改时,我都必须重新启动应用程序.
我正在使用Nancy 0.10内置的超级简单视图引擎和.html文件.
我正在使用Nancy编写一个简单的Web应用程序.至少有一个请求导致未知长度的流,所以我无法提供Content-Length.我想使用Transfer-Encoding: chunked,或(在这种情况下同样可以接受Connection: close).
我已经对Nancy源代码进行了快速破解,并且我已添加Response.BufferOutput,并且代码设置HttpContext.Response.BufferOutput为false.你可以在这里看到:
public class HomeModule : NancyModule
{
public HomeModule()
{
Get["/slow"] = _ => new SlowStreamResponse();
}
private class SlowStreamResponse : Response
{
public SlowStreamResponse()
{
ContentType = "text/plain";
BufferOutput = false;
Contents = s => {
byte[] bytes = Encoding.UTF8.GetBytes("Hello World\n");
for (int i = 0; i < 10; ++i)
{
s.Write(bytes, 0, bytes.Length);
Thread.Sleep(500);
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎没有任何影响.5秒钟后响应立即响起.我已经测试了这个基于简单WebRequest的客户端.
如何在Nancy中使用chunked输出?我正在使用ASP.NET托管,但我对其他托管选项的答案感兴趣.
如果我写一个简单的服务器使用 …
有人可以使用在自托管模式下运行的NancyFx发布关于如何上传大文件(例如50MB)的示例.该文件应该从网页发送(method = post; enctype = multipart/form-data).
在Web应用程序中,我使用Nancy来创建REST服务.不幸的是,在HTML中,我们的字段名称是小写(firstName),但.NET中的适当属性是大写(FirstName).此外,我们有一些领域不映射1:1,如id这将成为TicketId在.NET.
现在我有两个问题:
使用Nancy我可以返回这样的响应:
public class MainModule : NancyModule
{
public MainModule()
{
Get["/"] = parameters => {
return "Hello World";
};
}
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样返回状态400:
public class MainModule : NancyModule
{
public MainModule()
{
Get["/"] = parameters => {
return HttpStatusCode.BadRequest;
};
}
}
Run Code Online (Sandbox Code Playgroud)
如何返回特定的http状态代码并设置响应文本?
标题几乎解释了它.否则一切正常,我可以使用Dapper从我的应用程序INSERT/ UPDATE/ DELETE/ SELECT没有问题.我遇到的具体问题是在尝试将INSERT值放入我的表格时.
我已经尝试了几种不同的方法,似乎找不到一个能够正确地将JSON值插入到我的PostgreSQL数据库中的方法.我总是得到错误,我试图插入TEXT数据库所需的类型值JSON.
为简洁起见,我将尝试仅包含相关的代码片段.
以下RAW SQL在pgAdmin中运行得非常好:
INSERT INTO public.sales(
firstname, lastname, middlename, address1, address2, city, state,
zipcode, dateofbirth, phonenumber, phonenumberalt, insurancename, insuranceid, binnumber, pcnnumber, groupid,
offerid, offercodes, timestamp, otherfields)
VALUES ('Fname', 'lname1', NULL, '123 ABC St', NULL, 'Washington DC', 'DC',
'10062', '1988-01-01', '9545555555', NULL, 'BCBS', 'XYZ123', '600100', 'ABC123', 'DC123',
'12', '10,50,12', '2017-03-24', '{ "guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a", "name": "Angela Barton", "is_active": true, "company": "Magnafone", "address": "178 Howard …Run Code Online (Sandbox Code Playgroud) nancy ×10
c# ×4
.net ×1
.net-core ×1
dapper ×1
file-upload ×1
http-headers ×1
json ×1
json.net ×1
large-files ×1
postgresql ×1
razor ×1
self-hosting ×1
tinyioc ×1