标签: self-hosting

想要将WCF Web服务作为Windows服务托管,而不是IIS中的托管

我想公开一些Web服务,但考虑将其作为Windows服务托管,而不是在IIS中托管.

这是一个好习惯吗?

如是?我该如何保护它?

我想对访问它的用户进行身份验证(针对我们的自定义安全数据库,并且还要确保请求来自我们的业务伙伴(X.509证书????对此不起作用).

感谢你在这方面的指示.

感谢和问候,Ajay

iis wcf web-services windows-services self-hosting

5
推荐指数
2
解决办法
4871
查看次数

5
推荐指数
1
解决办法
1491
查看次数

我应该为生产选择哪种Cassini?共有来自5位不同作者的8个公共版本

我发现了Microsoft构建的几个版本的无IIS的Cassini网络服务器.我会用它,但我不确定哪一个是最好的,因为有很多分叉/构建:

你推荐什么样的Web服务器上面的分叉; 是Hostable Web Core新的Cassini,还是我仍然依赖于HWC的IIS?

如果你详细说明,我会很感激:

  • 该项目的安全性
  • 如果fork适合提供轻量级的"Admin"界面
  • 网站功能
  • 对IIS的任何依赖(例如HWC).

iis cassini self-hosting hostable-web-core

5
推荐指数
1
解决办法
2072
查看次数

如何使WAMP服务器安全.可能吗?

昨天我在我的网络上设置了一个本地主机,现在正在努力使它成为一个公共网站.我读到,使用WAMP自托管网站可能非常不安全,并且存在很高的安全风险.这是真的?我如何使我的WAMP服务器安全?我目前有Windows Vista(最新的服务包),卡巴斯基Pure 3.0和WAMP 2.2.
如果您可以发布解决方案,或保持我的自托管网站安全的提示,将不胜感激!
谢谢!

security wamp self-hosting

5
推荐指数
0
解决办法
5768
查看次数

获取请求的URL或操作参数i MediaTypeFormatter.ReadFromStreamAsync

我有一个自定义的WebApi应用程序 MediaTypeFormatter

根据"name"参数(或由此部分URL),应用程序应将请求主体格式化为不同的类型.

这是行动

// http://localhost/api/fire/test/ 
// Route: "api/fire/{name}",

public HttpResponseMessage Post([FromUri] string name, object data)
{
    // Snip
}
Run Code Online (Sandbox Code Playgroud)

这是自定义的MediaTypeFormatter.ReadFromStreamAsync

public override Task<object> ReadFromStreamAsync(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)
{
    var name = "test"; // TODO this should come from the current request

    var formatter = _httpSelfHostConfiguration.Formatters.JsonFormatter;

    if (name.Equals("test", StringComparison.InvariantCultureIgnoreCase))
    {
        return formatter.ReadFromStreamAsync(typeof(SomeType), readStream, content, formatterLogger);
    }
    else
    {
        return formatter.ReadFromStreamAsync(typeof(OtherType), readStream, content, formatterLogger);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

5
推荐指数
1
解决办法
810
查看次数

(可选)接受自托管WCF服务中的客户端证书

我想在我的自托管WCF服务中拥有一个SSL端点,该端点可以接受具有HTTP基本身份验证凭据或客户端证书凭据的请求.

对于IIS托管服务,IIS区分"接受客户端证书"和"需要客户端证书".

WCF WebHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;似乎是IIS中"需要证书"设置的模拟.

有没有办法配置WCF自托管服务来接受客户端证书凭据,但不是每个客户端都需要它们?是否存在用于自托管WCF服务的IIS"接受客户端证书"的WCF模拟?

authentication ssl wcf self-hosting client-certificates

5
推荐指数
2
解决办法
1228
查看次数

在Signalr 2.0自主机中使用依赖注入?

在自托管应用程序中使用SignalR 2.0,根据这些说明,您可以这样:

class Startup
{
   public void Configuration(IAppBuilder app)
   {
       app.MapSignalR(new HubConfiguration { Resolver = ... });
   }
}
class Program
{
    static void Main(string[] args)
    {
        using (WebApp.Start("http://localhost:8080")) // constructs Startup instance internally
        {
            Console.WriteLine("Server running on {0}", url);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您会注意到Startup类实例是使用一些幕后魔术创建的.我无法弄清楚如何填写依赖关系.有没有办法覆盖Startup类的构造,以便我可以注入依赖项?

c# asp.net dependency-injection self-hosting signalr

5
推荐指数
1
解决办法
1907
查看次数

停止自托管owin服务器时完成当前请求

我有OWIN服务器作为控制台应用程序的一部分.你可以在这里看到主要方法:

class Program
{
    public static ManualResetEventSlim StopSwitch = new ManualResetEventSlim();

    static void Main(string[] args)
    {
        Console.CancelKeyPress += (s, a) =>
        {
            a.Cancel = true;
            StopSwitch.Set();
        };

        using (WebApp.Start<Startup>("http://+:8080/"))
        {
            Console.WriteLine("Server is running...");
            Console.WriteLine("Press CTRL+C to stop it.");
            StopSwitch.Wait();
            Console.WriteLine("Server is stopping...");
        }

        Console.ReadKey();
        Console.WriteLine("Server stopped. Press any key to close app...");
    }
}
Run Code Online (Sandbox Code Playgroud)

当请求的处理稍微长一点并且同时用户按下CTRL + C以停止应用程序时,立即停止请求处理并且不发送响应.是否有可能改变这种行为?我想拒绝所有新请求,但要等到当前正在处理的请求完成并在此之后停止服务器.

我最初的想法是创建OWIN中间件,它将跟踪当前正在处理的请求并推迟停止操作直到一切都完成.中间件还会在停止阶段将所有请求短路.但这个解决方案对我来说听起来不太好.

.net c# self-hosting owin katana

5
推荐指数
1
解决办法
2399
查看次数

删除OWIN自托管应用程序中的服务器HTTP标头

我有一个应用程序自托管OWIN应用程序,我想从所有响应中删除Server标头("Microsoft-HTTPAPI/2.0").在Google上搜索时,它看起来非常简单,例如MSDN上的这篇博文显示了一个看起来非常简单的解决方案.我按照说明操作:

  • HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters中添加注册表项DisableServerHeader 并将其设置为DWORD 1
  • 重新启动服务器以确保HTTP服务获取更改

结果非常令人失望,没有任何改变,我仍然得到Server头.令我感到困惑的是,所有解决方案都完全相同,对他们来说似乎有效.还有什么需要做的才能从自托管的OWIN应用程序中删除Server标头吗?

更新 我尝试自己添加一个服务器头,它实际上工作,但它仍然添加了Microsoft-HTTPAPI/2.0.

将此代码添加为DelegatingHandler:

HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
response.Headers.Server.Add(new ProductInfoHeaderValue("Foo", "1.0"));
Run Code Online (Sandbox Code Playgroud)

生成此服务器标头:服务器:Foo/1.0 Microsoft-HTTPAPI/2.0

.net c# self-hosting http-headers owin

5
推荐指数
1
解决办法
652
查看次数

具有Dot net核心的自托管In Process Web API

我正在尝试调查3.0版已经发布到点网核心的可行性。我们的关键组件之一允许我们(私有)的nuget创建自己的WebAPI,向消费者提供事件和方法。这支持远程服务控制或远程服务配置之类的功能,从而允许api提供远程配置设置/检索等。

此功能是我们微服务架构当前工作方式的关键。

我正在尝试使用dotnet核心复制此内容,但是,我一直在努力寻找直接等效的教程/场景。我们基本上遵循此处详述的过程:

https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

但是,在检查了nuget软件包的兼容性(并且一切看起来都很好..)之后,我现在在调用时仅获得空引用异常 WebApp.Start<Startup>(baseaddress);

空引用异常显然是由于nuget软件包与.net内核不兼容而调用的,请参见此处:

Owin在启动.Net Core 2.0上遇到过NullReferenceException-设置吗?

链接中提供的解决方案是一种方法,但是它使用了第三方应用程序-NancyFx。有什么方法可以以当前形式使用dotnet core实现相同的功能?以前有足够的有关自托管的文档,但是不幸的是,鉴于aspnet内核以其自己的进程运行,因此很难找到解决方案!

有人可以在这里指出正确的方向吗?

代码如下所示

//the external library would contain all this code. I.e. this could present the configuration endpoints as mentioned above.

public class Startup
{
    // This code configures Web API. The Startup class is specified as a type
    // parameter in the WebApp.Start method.
    public void Configuration(IAppBuilder appBuilder)
    {
        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { …
Run Code Online (Sandbox Code Playgroud)

c# self-hosting owin .net-core

5
推荐指数
1
解决办法
147
查看次数