标签: self-hosting

如何在WCF 4.5中使gzip压缩工作

WCF 4.5支持GZIP,无需第三方库或手写扩展.我通过TCP Binding得到它,但找不到通过HTTP绑定使其工作的方法.我的wcf - 服务是自我托管在Windows服务中.

插件:我不允许使用IIS; 我无法切换到任何WCF替换.

这适用于gzip:

binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp" 
Run Code Online (Sandbox Code Playgroud)

这就是我目前用于http的内容:

binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http"
Run Code Online (Sandbox Code Playgroud)

该文档并没有真正帮助我:http: //msdn.microsoft.com/en-us/library/dd456789.aspx.

但是,据此,它应该工作:

从WCF 4.5开始,WCF二进制编码器增加了对压缩的支持.使用CompressionFormat属性配置压缩类型.客户端和服务都必须配置CompressionFormat属性.压缩适用于HTTP,HTTPS和TCP协议.如果客户端指定使用压缩但服务不支持它,则抛出协议异常,指示协议不匹配.有关更多信息,请参阅选择消息编码器

.net c# wcf self-hosting

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

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万
查看次数

HttpSelfHostServer和HttpContext.Current

我正在开发一个自托管的ASP.NET web api-application.一切正常,但现在我正在努力HttpContext:

我需要从客户端保存会话信息.但HttpContext.Current总是空的.所以很明显我HttpSelfHostServer不使用静态HttpContext-Class.

我不明白的是:为什么......?而且我无法想办法既不告诉也HtttpSelfHostServer不能HttpSelfHostConfiguration合作HttpContext.

这是我正在做的事情:

  1. 创建一个 HttpSelfHostConfiguration

    • 1.1添加Service-Resolvers&Routes
    • 1.2添加自定义 UserNamePassword-Validator
  2. 使用config创建新的HttpSelfHostServer实例

    • 2.1 server.OpenAsync().Wait()

任何帮助我如何告诉我的服务器工作HttpContext.Current非常感谢!干杯!

c# self-hosting httpcontext asp.net-web-api

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

Mono中的自托管WCF服务

我目前正在开发一个C#项目,它是一个控制台应用程序,其中包含一个WCF soap服务.

下面是我用来打开主机的代码.

var baseAddress = new Uri(Configuration.soapServerSettings.soapServerUrl);
var host = new ServiceHost(typeof(SoapServer), baseAddress);
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();

var meta = new ServiceMetadataBehavior()
{
    HttpGetEnabled = true,
    HttpGetUrl = new Uri("", UriKind.Relative)
};

host.Description.Behaviors.Add(meta);

var debugBehaviour = new ServiceDebugBehavior()
{
    HttpHelpPageEnabled = true,
    HttpHelpPageUrl = new Uri("", UriKind.Relative),
    IncludeExceptionDetailInFaults = true
};

ServiceEndpoint endpnt = host.AddServiceEndpoint(
    typeof(ISoapInterface),
    basicHttpBinding,
    "EmailServer");

host.Description.Behaviors.Remove(typeof(ServiceDebugBehavior));
host.Description.Behaviors.Add(debugBehaviour);
host.Open();
Run Code Online (Sandbox Code Playgroud)

这在Windows上完全正常,但在Linux上,当我浏览到它时,我收到以下消息:

XmlSchema错误:命名项 http://schemas.microsoft.com/2003/10/Serialization/:anyType已包含在架构对象表中.考虑将MONO_STRICT_MS_COMPLIANT设置为"是"以模仿MS实现.相关架构项SourceUri:,第3行,第3位.

我不知道从哪里开始研究这个问题.

感谢您的任何帮助,您可以提供

更新: 根据Rob Goodwins的建议,我添加了MONO_STRICT_MS_COMPLIANT环境变量,它看起来确实有效,我可以访问该服务.但是,我现在遇到了另一个问题.我有一个PHP页面,它每隔几秒就会发出几个请求,但过了一分钟后,我的应用程序崩溃了.

我得到以下异常:

此XmlWriter在此状态下不接受StartTag错误.在System.Xml.XmlTextWriter.WriteStartElement(System.String前缀,System.String localName,System.String namespaceUri)[0x00000] in:0 at …

c# mono wcf self-hosting

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

如何为Katana/Owin自托管应用设置默认静态网页?

我使用Owin自托管控制台应用程序建立了一个网站.我正在提供静态文件没有问题,网站静态部分的"根"正常工作,并且Web API路由也正常工作.

如果我浏览到:

http://localhost/index.html
Run Code Online (Sandbox Code Playgroud)

它呈现了我所期望的一切.但我还没弄清楚如何设置它以便浏览:

http://localhost
Run Code Online (Sandbox Code Playgroud)

提供index.html(作为默认视图).这是在IIS风格的网站下工作.如何使其与Owin自我主机一起使用?

asp.net self-hosting owin katana

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

在LINQPad中使用WebAPI?

当我尝试在LINQPad中使用Selfhosted WebAPI时,我只是得到了相同的错误,该类的控制器不存在.

我是否必须为WebAPI(控制器/类)创建单独的程序集,然后在我的查询中引用它们?

这是我正在使用的代码

#region namespaces
using AttributeRouting;
using AttributeRouting.Web.Http;
using AttributeRouting.Web.Http.SelfHost;
using System.Web.Http.SelfHost;
using System.Web.Http.Routing;
using System.Web.Http;
#endregion

public void Main()
{

    var config = new HttpSelfHostConfiguration("http://192.168.0.196:8181/");
    config.Routes.MapHttpAttributeRoutes(cfg =>
    {
        cfg.AddRoutesFromAssembly(Assembly.GetExecutingAssembly());
    });
    config.Routes.Cast<HttpRoute>().Dump();

    AllObjects.Add(new UserQuery.PlayerObject { Type = 1, BaseAddress = "Hej" });

    config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
    using(HttpSelfHostServer server = new HttpSelfHostServer(config))
    {
        server.OpenAsync().Wait();
        Console.WriteLine("Server open, press enter to quit");
        Console.ReadLine();
        server.CloseAsync();
    }

}

public static List<PlayerObject> AllObjects = new List<PlayerObject>();

public class PlayerObject
{
    public uint Type { get; …
Run Code Online (Sandbox Code Playgroud)

self-hosting linqpad asp.net-web-api attributerouting

15
推荐指数
1
解决办法
3025
查看次数

管理生产环境的演变

我们正在使用play 2.1.1将新应用程序部署到生产环境中,并且正在解决它的一些实际问题,并且非常有限的文档没有多大帮助......

所以是时候更新到新版本了,我们运行了常用的停止/升级/启动脚本,但是它们失败了.出于某种原因,游戏拒绝应用演变.开始时一直说

哎呀,无法启动服务器.@ 6elnj89fh:数据库'默认'需要进化!

即使我们尝试applyEvolutions.default=true通过命令行和application_prod.conf文件设置它们.它还抱怨说

警告!此脚本包含可能具有破坏性的DOWNS演变

这对我来说没有多大意义,因为我们在版本上升所以不应该应用下降.但似乎这可能是它拒绝应用演变的原因.

在这一点上,我并不那么担心,因为我认为有一些手动方式来应用进化.经过广泛的搜索后,它看起来好像......在游戏1中有支持,但在游戏中没有.2.在开发模式下,您只需按下浏览器中的按钮即可应用演变,但在生产模式下我找不到任何方式手动应用进化.这是真的还是我错过了?我真的认为这是一个重要的功能!(在后面的视线中我可以手动应用脚本并禁用evolutions插件,但之后我会丢失evolutions跟踪,这很有用..)

我也想知道你将如何"支持"你的数据库,因为我相信我们会在某些时候需要做到这一点.如果有一种手动方式来执行此操作,则可能会有一个可选的版本参数来降级数据库.例如,如果您处于版本5并且需要返回到4,那​​么您将运行play apply-evolutions 4该版本,然后应用版本5的版本并相应地更新evolutions db.我可以手动应用下降,但问题是进化db将再次处于无效状态...

越来越绝望我尝试了所有我能找到的设置再次启动服务器并添加了-DapplyDownEvolutions.default=true选项.我假设这个设置仅在选择降级数据库时会应用下降(虽然似乎没有这样的选项)但实际上做的是应用ups然后立即应用下降(我在故障排除后发现这个服务器现在终于启动了 - 没有任何消息 - 但在访问该站点时给出了一个神秘的错误消息).是这个设置应该做什么?如果是,我无法理解为什么设置甚至存在.我想不出任何你希望在迁移到更新的数据库版本时应用ups然后立即降低的情况.有人可以对这个设置有所了解吗?

此时,我终于可以通过手动重新运行相应的"UP"来再次运行应用程序.

在这一点上,我们正在努力为我们自己的演进处理基本上重新编写脚本,以便更好地控制运行的内容并启用返回..为此能够使用播放功能会更好我希望有人可以对此有所了解.如果没有,也许这个咆哮可以帮助处于类似情况的人......

production self-hosting playframework playframework-2.1

14
推荐指数
1
解决办法
5337
查看次数

在WCF自托管服务中指定Singleton服务

我正在编写一个通过WCF公开服务的应用程序.该服务是自托管的(控制台应用程序),需要使用Singleton实例.我试图弄清楚如何在服务配置中指定单例,而不使用服务实现上的属性.是否可以在没有属性的代码中指定单例?

谢谢,埃里克

wcf self-hosting

13
推荐指数
1
解决办法
9562
查看次数

"System.MissingMemberException:无法找到服务器工厂"启动TeamCity中自托管的Microsoft.Owin

当Teamcity运行启动自托管Web应用程序的集成测试时,测试将失败并显示错误:

System.MissingMemberException: The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
Run Code Online (Sandbox Code Playgroud)

抛出此错误的代码是:

var webApp = WebApp.Start<Startup>("http://*:52203/")
Run Code Online (Sandbox Code Playgroud)

使用Visual Studio(使用Resharper测试运行器)执行测试时运行正常.Teamcity配置为使用JetBrains.BuildServer.NUnitLauncher.exe可执行文件来运行测试.

我看到很多关于这个错误的帖子与Microsoft.Owin.Host.HttpListener.dllbin 有关,因为bin\debug或bin\release文件夹中没有.我可以确认此文件(以及随附的.xml文件)都存在于TeamCity buildAgent使用的bin\release文件夹中.没有bin\debug文件夹.

.net teamcity self-hosting owin

13
推荐指数
2
解决办法
4794
查看次数

支持https的Owin自主控制台应用程序(无web api,无SignalR)

使用SslStream和socket,我从头开始开发了一个https Web服务器.我可以将证书应用于来自C#代码的流并处理请求.

但是,我并没有弄清楚如何用Owin做到这一点.有没有人知道如何将证书绑定到自托管控制台应用程序?

例:

// Bind the below certificate to Owin host
var certificate = new X509Certificate2("server.pfx", "password");
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅下面的现有Owin主机代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin.Hosting;
using AppFunc = System.Func<System.Collections.Generic.IDictionary<string, object>, System.Threading.Tasks.Task>;

namespace Owin.Startup
{
    class Program
    {
        static void Main(string[] args)
        {
            int port = 8888;
            string url = $"http://localhost:{port}";
            using (WebApp.Start<Startup>(url))
            {
                Console.WriteLine($"Hosted: {url}");
                Console.ReadLine();
            }
        }
    }

    public class Startup
    {
        private IAppBuilder app;
        public void Configuration(IAppBuilder app)
        {
#if DEBUG
            app.UseErrorPage(); …
Run Code Online (Sandbox Code Playgroud)

c# ssl self-hosting asp.net-web-api owin

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