C#-如何在IIS上托管我的自定义WebServer?

时间:2018-08-26 14:39:31

标签: c# sockets iis owin

我创建了一个新协议,而不是使用在(tcplistener或OWIN)和tcpclient上运行的http协议。 现在,我想将其托管到IIS(使用OWIN或Katana等)。

注意:

1。我不想使用WCF,SignalR,WebSocket和其他组件

2。我可以将协议的第一行标题更改为Send Owin host及其工作示例:

    public class WebSocketConnectionMiddleware : OwinMiddleware
    {
        public WebSocketConnectionMiddleware(OwinMiddleware next)
            : base(next)
        {

        }

        public override Task Invoke(IOwinContext context)
        {
            //this line will call after tcp connect
            return null;
        }
    }

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {

            app.Use<WebSocketConnectionMiddleware>();
            // New code:
            app.Run(async context => {
                context.Response.ContentType = "text/plain";
                await context.Response.WriteAsync("Hello, world.");
            });

            try
            {
                TcpClient tcpClient = new TcpClient();
                tcpClient.Connect("localhost", 7994);
                var bytes = Encoding.ASCII.GetBytes(@"SignalGo-4.0 http://localhost:7994 HTTP/1.1
Host: localhost:7994

");
                tcpClient.GetStream().Write(bytes, 0, bytes.Length);

            }
            catch (Exception ex)
            {

            }
        }
    }

但是我无法对NetworkStream读取或写入任何内容(tcpclient连接在哪里?) 问题是:

1.OWIN中是否可以访问TCPClient或NetworkStream进行长时间的数据读写?

2。我可以制定自定义协议吗?例如完整更改第一行“ GET localhost:443 HTTP / 1.0 \ r \ n Host:localhost”主机和标头等?

0 个答案:

没有答案