标签: nancy

我该如何处理南希的身份验证?

我开始为Nancy编写一个LoginModule,但我想到可能需要以不同的方式执行身份验证.在南希有一种可以接受的认证方式吗?我现在正在计划两个项目:web和json服务.我需要两个身份验证.

c# authentication nancy

20
推荐指数
1
解决办法
1万
查看次数

如何在NancyFx中创建一个图像处理程序

我正在努力从NancyFX中的数据库中将byte []中的Image输出到Web输出流.我没有示例代码足够接近甚至在此时显示.我想知道是否有人解决了这个问题并且可以发布一个代码片段?我基本上只想从存储在我的数据库中的字节数组中返回image/jpeg,然后将其放到Web而不是物理文件中.

image outputstream nancy

20
推荐指数
3
解决办法
6497
查看次数

SignalR plus NancyFX:一个简单但功能良好的例子

例如,有一些NancyFX与SignalR集成的例子

由于我刚刚开始,我想要一个简单,工作良好的规范示例,我可以从中工作.来自微软的聊天示例的nancy版本可以正常运行.

谢谢

nancy signalr

20
推荐指数
1
解决办法
8854
查看次数

NancyFx和Windows身份验证

我想将NancyFx用于Intranet Web应用程序.所有文档和论坛仅提及表单和基本身份验证.任何人成功使用Nancy与Windows身份验证?

还有一种名为Nancy.Authentication.Stateless的东西,但我看不出它的作用(看起来像是在Apis中使用).

.net asp.net windows-authentication nancy

19
推荐指数
3
解决办法
6839
查看次数

ASP.NET MVC应用程序的自托管

我有一个完整的ASP.NET MVC应用程序(由5个程序集组成,.NET 4.5.1,ASP.NET MVC 5.2.2),它在Visual Studio(使用IISExpress)中运行良好.

我现在想要一个控制台应用程序,它接受MVC应用程序并托管它(自托管).

我尝试过Microsoft.Owin.Host.HttpListener,Nancy.Owin但是当我得到404页面时,我的配置缺少映射到我的MVC应用程序.

我有

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseNancy();
    }
}
Run Code Online (Sandbox Code Playgroud)

    static void Main(string[] args)
    {
        StartOptions so = new StartOptions("http://localhost:9000/");
        using (WebApp.Start<Startup>(so))
        {
            Console.WriteLine("Press Enter to Exit");
            Console.ReadLine();
        }
    }
Run Code Online (Sandbox Code Playgroud)

但显然MyMvcApplication缺少从正在运行的MVC应用程序中使用的配置.怎么做?或者如何自我托管呢?

我在网上找到的答案是指旧版本,我希望今天有更简单的方法.

c# asp.net-mvc self-hosting nancy owin

19
推荐指数
1
解决办法
1万
查看次数

禁用ASP.NET HttpHandler响应缓存

背景

我正在比较在IIS 7下运行的NancyFx和ServiceStack.NET的性能(在Windows 7主机上进行测试).两者都非常快 - 在本地测试每个框架进程超过10,000 req/sec,ServiceStack的速度提高了约20%.

我遇到的问题是ASP.NET似乎正在缓存来自HttpHandler的每个唯一URI请求的响应,很快导致大量内存压力(3 GB以上)和垃圾收集器过度工作(大约25%的时间消耗GC).到目前为止,我一直无法禁用对象的缓存和构建,并且正在寻找有关如何禁用此行为的建议.

细节

请求循环基本如下:

for i = 1..100000:
    string uri = http://localhost/users/{i}
    Http.Get(uri)
Run Code Online (Sandbox Code Playgroud)

响应是一个简单的JSON对象,格式为{UserID:n}.

我已经破解了打开的WinDBG,并且每个请求都有:

  • System.Web.FileChangeEventHandler
  • System.Web.Configuration.MapPathCacheInfos
  • System.Web.CachedPathDatas
  • System.Web.Caching.CacheDependencys
  • System.Web.Caching.CacheEntrys

显然,这些缓存项目让我相信它是一个缓存膨胀问题(我很想摆脱150,000个无法使用的对象!).

到目前为止我尝试过的

  • 在IIS的"HTTP Resonse Headers"中,将"Expire Web content"设置为"Immediate".
  • 在web.config中

    <system.web>
     <caching>
        <outputCache enableOutputCache="false" enableFragmentCache="false"/>
      </caching>
    </system.web>
    
    Run Code Online (Sandbox Code Playgroud)
  • 同样在web.config中(以及策略的许多变体,包括无).

    <caching enabled="false" enableKernelCache="false">
      <profiles>
        <add policy="DontCache" kernelCachePolicy="DontCache" extension="*/>
      </profiles>
    </caching>
    
    Run Code Online (Sandbox Code Playgroud)
  • 查看框架的源代码,看看是否可能存在使用ASP.NET缓存的任何"功能".虽然有缓存帮助程序,但它们对框架本身是私有的,并且似乎不利用ASP.NET缓存.

更新#1

通过反射器挖掘我发现将值设置UrlMetadataSlidingExpiration为零消除了过多内存使用的大部分,代价是将吞吐量减少50%(FileAuthorizationModule类缓存FileSecurityDescriptors,生成时必须有些昂贵,UrlMetadataSlidingExpiration是非零).

这是通过更新web.config并将以下内容放入:

<hostingEnvironment urlMetadataSlidingExpiration="00:00:00"/>
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我将尝试完全禁用FileAuthorizationModule运行,看看是否有帮助.但是,ASP.NET仍然会生成2*N MapPathCacheInfoCacheEntry对象,因此内存仍在消耗,速度要慢得多.

更新#2

另一半问题与此处描述的问题相同:阻止许多不同的MVC URL填充ASP.NET缓存.设置

<cache percentagePhysicalMemoryUsedLimit="1" …

asp.net caching httphandler servicestack nancy

18
推荐指数
1
解决办法
4115
查看次数

使用Owin时无法使ASP.NET Web API 2帮助页面正常工作

我为Web Api 2安装了正确的软件包

Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre 
Run Code Online (Sandbox Code Playgroud)

但是帮助区域没有被映射并返回404(Web Api工作正常).我正在使用Microsoft.Owin.Host.SystemWeb作为主机.下面是我的启动代码.

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            //Required for MVC areas new HttpConfiguration() doesn't work with MVC
            var config = GlobalConfiguration.Configuration;

            AreaRegistration.RegisterAllAreas();

            WepApiStartup.Configure(config);

            app.UseWebApi(config);

        }
    }
Run Code Online (Sandbox Code Playgroud)

nancy asp.net-web-api owin asp.net-web-api-helppages

18
推荐指数
2
解决办法
1万
查看次数

在Response中返回HttpStatusCode

有没有一种简单的方法可以为我的api返回一个HttpStatusCode?我发现了一个稍微冗长的方法来做到这一点

return Response.AsJson(new object(), HttpStatusCode.NoContent);
Run Code Online (Sandbox Code Playgroud)

我看过这个Response类的源代码了

 public static implicit operator Response(HttpStatusCode statusCode) { ... }
Run Code Online (Sandbox Code Playgroud)

这是我在找什么?如果是这样我如何使用它,我真正希望能做的是

return Response(HttpStatusCode.NoContent);
Run Code Online (Sandbox Code Playgroud)

nancy

18
推荐指数
1
解决办法
1万
查看次数

无法启动nancy self host而没有管理员权限

我的应用程序使用Nancy Selfhosting.当我在没有管理员权限的情况下启动它时,我得到一个System.Net.HttpListenerException"Access Denied".

这是代码:

static void Main(string[] args)
    {   
        var nancyHost = new Nancy.Hosting.Self.NancyHost(new Uri("http://localhost:80/"));
        nancyHost.Start();
        Application.Run();
    }
Run Code Online (Sandbox Code Playgroud)

我也试过不同的端口但没有成功.奇怪的是,在启动侦听同一个Url的HttpListener时,我没有得到任何异常.可能导致此异常的原因是什么?

c# nancy

17
推荐指数
1
解决办法
7707
查看次数

如何在使用Nancy FX Self Host时修复AutomaticUrlReservationCreationFailureException

使用Nancy FX时,我遇到了以下在尝试启动Web服务时抛出的异常: AutomaticUrlReservationCreationFailureException

仔细研究了一下后,我发现解决这个问题的方法是运行cmd提示符(作为管理员),然后运行以下命令:

netsh http add urlacl url=http://+:1234/ user=DOMAIN\username
Run Code Online (Sandbox Code Playgroud)

哪里

  • DOMAIN\username 是服务将在其下运行的用户的ID
  • 1234 是服务将运行的端口

我在这里写这篇文章是为了防止其他人遇到同样的问题而花半个小时左右的时间寻找答案 - 希望他们能比我更快找到这个!

netsh nancy

17
推荐指数
3
解决办法
1万
查看次数