标签: self-host-webapi

针对Self Host Web API Windows服务验证HTTP .NET客户端

我通过Self Host Web API 找到了关于客户端/服务器实现的精彩文章http://www.asp.net/web-api/overview/older-versions/self-host-a-web-api

我想知道这个模型(Self Host Web API)的正确身份验证方法.

我是否使用了承载令牌身份验证?还有其他方法吗?

或者例如http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

我有以下工作要求:

  1. C#http客户端必须连接到Self Host Web API Windows服务并发送文件.

  2. 连接必须100%安全.

那么如何保护WebAPI,任何线索?

.net asp.net self-host-webapi

10
推荐指数
1
解决办法
1060
查看次数

如何更改 asp.net Core 3 或 Net Core 5 中的默认端口

当我在调试时,要更改默认端口,我修改了launchSettings.json文件,并更改端口

"WebApplication1": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://*:8081;http://*:8080"
    }
Run Code Online (Sandbox Code Playgroud)

但是如果我在文件夹 (selfHost) 中发布应用程序并启动可执行文件,它总是侦听端口 5000 有人知道如何更改生产中的默认端口。我尝试在 program.cs 中使用UseUrls更改它但不起作用

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                }).UseWindowsService()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    .UseUrls("http://*:8080","https://*:8081");
                })
            .UseSerilog();
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core self-host-webapi asp.net-core-webapi asp.net-core-3.0

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

Web API自托管客户端配置

我设法在控制台应用程序中使用OWIN运行我自己托管的WEP API,方法是使用如下代码:

//string baseAddress = "http://192.168.1.6:8111/";
string baseAddress = "http://+:8111/";

// Start OWIN host 
using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress))
{
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

通过在服务主机上使用和注册类似" http:// +:9000 / "的地址,我们的想法是使用主机的通用IP地址,当主机的IP可能发生变化时,该地址不会影响客户端.

客户端位于运行服务的其他计算机上.类似于局域网中的移动电话或来自局域网的其他笔记本电脑,以及将来如果可能的话,也可以在局域网之外.

在我的自托管服务的客户端,这是一个html页面,我有一个JavaScript代码,如:

//var uri = 'http://192.168.1.6:8111/api/tests';
var uri = 'http://+:8111/api/tests';

function Read()
{
    $.getJSON(uri + '/' + id)
}
Run Code Online (Sandbox Code Playgroud)

通过在客户端使用主机的静态注释IP地址,我可以访问自托管的WEB API,但是当我尝试使用通用的" http:// +:9000/api/tests "时,它无法连接到服务.

有没有办法通过使用这样的通用配置从客户端连接到服务?或者我应该如何配置服务主机和客户端,以便主机上的IP更改不会停止客户端计算机上的服务?

我需要考虑到我的自托管计算机的IP地址可能会更改,客户端将丢失连接,因为他们将使用服务主机的旧的过时IP地址.

.net c# asp.net-web-api self-host-webapi

6
推荐指数
1
解决办法
782
查看次数

如何在 asp.net 自托管 API 中启用 CORS?

我在 asp.net 中创建了一个自托管的 Web API,当我从 POSTMAN 调用它时它工作正常,但是当我从浏览器调用它时出现以下错误。

从源 ' http://localhost:4200 '访问 XMLHttpRequest at ' http://localhost:3273/Values/GetString/1 '已被 CORS 策略阻止:No 'Access-Control-A

下面给出的是我的服务类

using System.Web.Http;
using System.Web.Http.SelfHost;

namespace SFLSolidWorkAPI
{
    public partial class SolidWorkService : ServiceBase
    {
        public SolidWorkService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            var config = new HttpSelfHostConfiguration("http://localhost:8069");


            config.Routes.MapHttpRoute(
               name: "API",
               routeTemplate: "{controller}/{action}/{id}",
               defaults: new { id = RouteParameter.Optional }
           );

            HttpSelfHostServer server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
        }

        protected override void OnStop()
        {
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

c# asp.net cors self-host-webapi

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

当应用程序运行多个线程时,Owin selffhost Web 服务器响应缓慢

当应用程序运行多个线程时,owin 自托管 Web 服务器的响应能力出现了一个奇怪的问题。

我提供了一个简单的例子来说明问题:

申请代码:

using System;
using System.Threading;
using System.Threading.Tasks;
using Test.Api;

namespace Test.Web
{
    class Program
    {
        public static void RunWebServer()
        {
            Task.Factory.StartNew(() =>
            {
                StartWebServer();

            }, TaskCreationOptions.LongRunning);
        }

        private static void StartWebServer()
        {
            WebServer.StartWebServer();

            while (true)
            {
                Thread.Sleep(10);
            }
        }

        private static void StartThreads(int maxthreads)
        {
            for (int m = 0; m < maxthreads; m++)
            {
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(1000);
                    }
                });

                Thread.Sleep(10);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

c# self-hosting owin self-host-webapi

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