Tag: nancy

无法使用Nancy Self Hosting运行System.Web.Optimization

有没有人有运气使用System.Web.Optimization与Nancy Self Hosting? 如果我注释掉“Styles.Render(”〜/ csspack / logincss“)。ToString()”视图工作正常。 如果我把它留在空白页面就会发送到浏览器。 这就是我的Razor配置的样子。 public class RazorConfig : IRazorConfiguration { public IEnumerable GetAssemblyNames() { yield return “Microsoft.Web.Infrastructure”; yield return “WebGrease”; yield return “System.Web.Optimization”; yield return “System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”; } public IEnumerable GetDefaultNamespaces() { yield return “Microsoft.Web.Infrastructure”; yield return “WebGrease”; yield return “System”; yield return “System.Web”; yield return “System.Web.Optimization”; yield […]

Raspberry Pi上的自托管SignalR可以工作吗?

我希望在Raspberry Pi上托管基于C#/ mono / signalR的网页 – 这可能吗? 我设法编写了一个客户端 – 服务器 – 客户端解决方案,其中signalR集线器托管在运行IIS 8的PC上.pi上的控制台应用程序通过c#signalR客户端连接到服务器集线器。 asp.net服务器还为浏览器客户端提供了一个“远程控制”页面,用于向pi发送命令,但现在我想要消除PC作为一项要求并将所有内容托管在pi上。

如何使用Autofac来解析Nancy创建的子生命周期范围中的类型的每个请求依赖项的实例

我们在Windows服务中托管了多个应用程序,这些应用程序自我托管Nancy端点,以便公开有关应用程序操作的检测。 我们使用Autofac作为我们的IOC。 几个存储库在所有应用程序共享的核心DLL中注册到根容器中; 然后使用从Nancy.Autofac.Bootstrapper派生的引导程序将此容器作为其容器传递给Nancy。 我们发现,当Nancy收到Web请求时,它会从根容器中解析对存储库的请求,这会导致内存被非垃圾收集的IDisposable消耗,因为根容器不会超出范围(它有Windows服务的生命周期)。 这导致服务“泄漏”内存。 然后,我们切换到一个模型,在我们的南希引导程序中,我们使用InstancePerRequest在重写的ConfigureRequestContainer()方法中添加了存储库的注册: protected override void ConfigureRequestContainer(ILifetimeScope container, NancyContext context) { base.ConfigureRequestContainer(container, context); PerRequestContainerBuilder().Update(container.ComponentRegistry); } private static ContainerBuilder PerRequestContainerBuilder() { var builder = new ContainerBuilder(); // Dependency for repository builder.RegisterType().InstancePerRequest().As(); // Repository builder.RegisterType().InstancePerRequest().As(); return builder; } 我们还重写CreateRequestContainer()方法以使用标记MatchingScopeLifetimeTags.RequestLifetimeScopeTag创建请求容器。 protected override ILifetimeScope CreateRequestContainer(NancyContext context) { return ApplicationContainer.BeginLifetimeScope(MatchingScopeLifetimeTags.RequestLifetimeScopeTag); } 这似乎解决了IDisposable没有被处理的问题 – 子请求容器被放置在Web请求管道的末尾,并且由它解析的对象也被处理并最终被垃圾收集。 我们的问题是,这似乎是将存储库的实现细节泄漏到服务中,因为我们不仅要在ConfigureRequestContainer()注册存储库,还要注册存储库所需的任何其他对象,即如果我们想要更改实现我们必须“遍历依赖链”以使用它在每个服务中注册所需的对象 – […]

Nancy的本地化没有剃刀视图

目前我在南希使用razor作为我的视图引擎。 我可以在剃刀中访问我的资源文件: @Text.text.greeting 但我想切换到不同的视图引擎。 是否有其他可用的视图引擎支持TextResource? 本地化如何在超级简单视图引擎中运行? 或者有没有办法使用模型访问资源?

如何在Nancy中针对Active Directory进行身份validation?

这是一篇过时的文章,但http://msdn.microsoft.com/en-us/library/ff650308.aspx#paght000026_step3说明了我想做的事情。 我选择南希作为我的网络框架,因为它的简单性和低礼仪方法。 因此,我需要一种使用Nancy对Active Directory进行身份validation的方法。 在ASP.NET中,看起来您只需通过web.config文件中的某些设置在基于数据库的成员资格提供程序和Active Directory之间切换即可。 我不需要具体,但在开发和生产之间切换的能力将是惊人的。 如何才能做到这一点?

如何将模型绑定到动态创建的类nancyfx

首先要感谢任何愿意看看我的问题的人。 我对Nancyfx很新,我遇到了尝试将JSON有效负载绑定到动态创建的类的问题。 我按照这篇文章中的代码动态创建了类 – 在C#中动态创建一个类 这是我创建动态类的代码块,我承认它实际上是danijels给出的代码的剪切和粘贴 public static Type CompileResultType(List metadata) { TypeBuilder tb = GetTypeBuilder(); ConstructorBuilder constructor = tb.DefineDefaultConstructor(MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName); foreach (var field in metadata) { if(field.datatype == “String”) { Type datatype = Type.GetType(“System.String”); CreateProperty(tb, field.columnname, datatype); } if (field.datatype == “int”) { Type datatype = Type.GetType(“System.Int32”); CreateProperty(tb, field.columnname, datatype); } […]

如何远程访问自托管的Nancy服务?

我正在创建一个简单的Windows服务,它承载一个Nancy实例来提供其内部数据的视图。 在本地计算机上使用浏览器时,一切都按预期工作; 我看到它提供的观点。 但是,我找不到任何理由不能从远程浏览器(在同一网络上)访问。 从远程浏览器访问只会延迟一段时间; IE将最终显示“此页面无法显示”; iPad上的Safari会在一段时间内显示部分进度条并且不执行任何操作。 我使用所有本地IP绑定,而不仅仅是localhost。 我在此链接上使用GetUriParams()函数来发现绑定的所有本地IP地址。 http://www.codeproject.com/Articles/694907/Embed-a-web-server-in-a-windows-service _nancyHost = new NancyHost(GetUriParams(port)); _nancyHost.Start(); 我在这个页面上发现绑定到localhost仅适用于本地访问。 http://forums.asp.net/t/1881253.aspx?More+SelfHost+Documentation 此function发现的IP适用于以前安装VMware播放器的以太网适配器,无线适配器和两个VMware网络适配器。 我已尝试通过机器名称和文字IP远程访问以太网适配器。 我在urlacl列表中添加了条目。 我已经在很多地方使用了netsh http add urlacl命令,包括在这个链接: 远程访问Nancy Self Host 如果我执行netsh http show urlacl ,我会看到我正在使用的端口的条目。 我尝试了不同的Nancy配置如果我为UrlReservations.CreateAutomatically设置Nancy配置选项,我将获得安全提示,在允许之后,我在netsh http show urlacl看到新条目netsh http show urlacl所有本地IP的netsh http show urlacl列表输出,但它仍然没有允许远程访问。 我还尝试了RewriteLocalHost选项true和false。 我尝试使用http://+:3684或http://*:3684 (从Uri()获取解析exception)和http://0.0.0.0:3684 (从AddAllPrefixes()获取exception) AddAllPrefixes()在HttpListener() )中。 我将EXE添加到Windows防火墙我已经创建了防火墙例外,如下所述: https : //msdn.microsoft.com/en-us/library/ms733768.aspx 关联规则显示具有TCP和UDP的每个列的Private,Public和“Any”。 我尝试在不同的环境中运行Nancy。 我运行了以下代码:作为本地系统运行的Windows服务,Visual […]

EntityFramework DbContext生命周期+ Postgres:“一项操作已在进行中。”

我几天来一直在弄乱以下几天。 我有一个在Mono上运行的Nancy应用程序,带有Repository模式和UnitOfWork的EntityFramework,以及Postgres。 Nancy使用TinyIoC作为IoC容器。 我有一个Web应用程序,它在前端对请求进行排队,因此后端每次都会遇到一个请求。 一切正常。 但是,当我运行连接到同一后端的iOS应用程序并且没有将请求排队到后端时,麻烦就开始了,有时几乎同时触发请求。 随机间隔后端开始抛出此错误: 2016-09-20T13:30:16.120057436Z app[web.1]: System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. —> System.InvalidOperationException: An operation is already in progress. 2016-09-20T13:30:16.120104535Z app[web.1]: at Npgsql.NpgsqlConnector.StartUserAction (ConnectorState newState) in :0 2016-09-20T13:30:16.120113254Z app[web.1]: at Npgsql.NpgsqlCommand.ExecuteDbDataReaderInternal (CommandBehavior behavior) in :0 2016-09-20T13:30:16.120119308Z app[web.1]: at Npgsql.NpgsqlCommand.ExecuteDbDataReader (CommandBehavior behavior) in […]

让CORS与Nancy合作

我试图让所有类型的请求与Nancy和CORS一起工作。 目前我在请求结束时添加了一个管道: pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) => ctx.Response .WithHeader(“Access-Control-Allow-Origin”, “http://localhost:57515”) .WithHeader(“Access-Control-Allow-Methods”, “POST, GET, DELETE, PUT, OPTIONS”) .WithHeader(“Access-Control-Allow-Headers”, “Accept, Origin, Content-type”) .WithHeader(“Allow”, “POST, GET, DELETE, PUT, OPTIONS”)) 选项请求返回状态代码为200,这使我相信它执行正常,但对于OPTIONS以外的任何类型的请求,它都会因405 Method Not Allowed而失败。 还有什么我需要做客户端或服务器端才能使其工作? 我使用的客户端库是骨干。 提前致谢。

为什么没有查询参数传递给我的NancyFX模块?

我正在我的应用程序内运行一个自托管的NancyFX Web服务器。 现在我托管了一个模块: public class MetricsModule : NancyModule { private IStorageEngine _storageEngine; public MetricsModule(IStorageEngine storageEngine) : base(“/metrics”) { _storageEngine = storageEngine; Get[“/list”] = parameters => { var metrics = _storageEngine.GetKnownMetrics(); return Response.AsJson(metrics.ToArray()); }; Get[“/query”] = parameters => { var rawStart = parameters.start; var rawEnd = parameters.end; var metrics = parameters.metrics; return Response.AsJson(0); }; } } […]