标签: kestrel-http-server

为什么从命令行启动时 ASP.NET Core Web 应用程序不提供静态 Web 资源?

这个标题太长了,但这是一个更孤立的问题:

为什么 ASP.NET Core Web 应用程序在从命令行启动时不提供静态 Web 资源并且ASPNETCORE_ENVIRONMENT未设置 或设置为除 之外的任何其他值"Development"

语境

我使用 VS 2022 内置模板(.NET 6,但我不认为该问题/疑问是 .NET 5 特定的)创建了一个新的 ASP.NET Core Web 应用程序,我没有以任何方式更改创建的应用程序

我能够在 IIS Express 下运行我的 ASP.NET Core Web 应用程序,或者使用 Visual Studio在没有launchsettings.json.IIS Express 的情况下运行我的 ASP.NET Core Web 应用程序,基于,我的意思是使用绿色三角形下拉列表,然后选择 WebApplication 而不是 IIS Express


只是出于好奇,我尝试从 bin 文件夹启动 WebApplication1.exe。它开始,我可以使用 https://localhost:5001/ 通过浏览器访问它,页面加载,但没有 CSS、JS。我可以看到所有对静态资源的请求都有404响应。

我怀疑我应该以某种方式配置静态网络资源所在的应用程序。我看到相应的WebApplication1.runtimeconfig.jsonWebApplication1.staticwebassets.runtime.json(以前的WebApplication1.staticwebassets.xml)在那里......但后来我发现神奇的ASPNETCORE_ENVIRONMENT是环境与该问题有关。

到目前为止我已经尝试过什么?

在命令 shell 中,我将环境变量设置为

SET ASPNETCORE_ENVIRONMENT=Development
Run Code Online (Sandbox Code Playgroud)

...然后开始,然后我启动了 WebApplication.exe,这种情况下一切正常,静态 Web 资源已提供服务。

问题

在非常简单的 …

kestrel-http-server asp.net-core

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

Kestrel命令抛出无法加载libuv.确保已安装libuv并以libuv.so.1的形式提供

我正在尝试从https://github.com/aspnet/home运行示例

我按照文档中的所有步骤操作,但我无法使其工作.

我正在运行dnx . kestrel(在CentOS上),错误是:

System.InvalidOperationException: Unable to load libuv. Make sure libuv is installed and available as libuv.so.1
  at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Load (System.String dllToLoad) [0x00000] in <filename unknown>:0
  at Microsoft.AspNet.Server.Kestrel.KestrelEngine..ctor (ILibraryManager libraryManager, IApplicationShutdown appShutdownService) [0x00000] in <filename unknown>:0
  at Kestrel.ServerFactory.Start (IServerInformation serverInformation, System.Func`2 application) [0x00000] in <filename unknown>:0
  at Microsoft.AspNet.Hosting.Internal.HostingEngine.Start () [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)

libuv.so.1.0.0/usr/local/lib

[/usr/local/lib]$ ls
libuv.a  libuv.la  libuv.so  libuv.so.1  libuv.so.1.0.0  pkgconfig
Run Code Online (Sandbox Code Playgroud)

我还为libuv.so.1in /usr/lib和添加了符号链接/usr/lib64

我甚至检查了kestrel的源代码, …

mono centos libuv kestrel-http-server asp.net-core

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

ASP.NET 5 - beta8:后台没有重建

beta8之前,它是可以启动一个Web应用程序,改变一些代码(例如关于-观的ViewBag.Message),保存并刷新浏览器-瞧,显示新的消息不重建项目.

现在,当使用使用DNX和Kestrel的beta8创建一个新的Web应用程序时,这似乎不再适用.知道为什么吗?

dnx kestrel-http-server asp.net-core

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

ASP.NET vNext Kestrel + Windows身份验证

我在Linux系统上安装了ASP.NET Web应用程序,它运行良好,可以浏览所有内容。现在我想知道,是否有任何可能性或解决方法可以在Kestrel服务器上使用Windows身份验证方案?正如我在Google上搜索后看到的那样,目前不支持此功能。

感谢您的回答。

编辑:

但是Windows身份验证在Kestrel中不起作用,我能够通过在我的webb应用程序中实现NTLM身份验证的质询-响应协议来获取用户名。

基于https://loune.net/2009/09/ntlm-authentication-in-php-now-with-ntlmv2-hash-checking/

c# linux asp.net-mvc kestrel-http-server

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

如何从 Kestrel 服务器设置 StatusDescription?

如何从 Kestrel 服务器设置 HTTP 状态描述?我想返回 HTTP/1.1 400 ArgumentException而不是HTTP/1.1 400 Bad RequestStatusDescription在 中找不到属性DefaultHttpResponse,我只能StatusCode用数字代码更改。

这是示例应用程序:

https://github.com/aspnet/KestrelHttpServer/tree/dev/samples/SampleApp

c# .net-core kestrel-http-server

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

无法通过 docker 连接到 ASP.NET Core

嗨,人们已经关注这个问题太久了,需要一些帮助。

我制作了一个 ASP.NET 核心网站,只是与 VS 2017 (v 1.1) 配套的模板而已。我使用 dotnet core cli 发布站点并使用此 dockerfile 构建图像:

FROM microsoft/dotnet:1.1-runtime
COPY /Publish /dotnetapp
WORKDIR /dotnetapp

EXPOSE 8444
ENTRYPOINT ["dotnet", "Inqu.dll"]
Run Code Online (Sandbox Code Playgroud)

当我运行创建的图像时:

docker run -it <image_name:tag> -p 8444:8444
Run Code Online (Sandbox Code Playgroud)

图像启动等待请求:

Hosting environment: Production
Content root path: /dotnetapp
Now listening on: http://*:8444
Application started. Press Ctrl+C to shut down.
Run Code Online (Sandbox Code Playgroud)

但是我无法访问该站点并在尝试访问该站点时收到 ERR_CONNECTION_REFUSED 认为http://local-ip:8444/

我已将 WebHostBuild 修改为:

        var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://*:8444")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

        host.Run();
Run Code Online (Sandbox Code Playgroud)

所以它应该监听8444端口,我也试过设置:

ENV ASPNETCORE_URLS http://*:8444
Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 中,但它没有帮助。


我在 …

docker kestrel-http-server asp.net-core

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

在Self Hosted ASP.NET Core Microservice中启动多个后台线程

我在哪里可以创建多个长时间运行的后台线程,Self Hosted Self Contained ASP.NET Core Microservice其生命周期与微服务生命周期相同?因此,从线程检索的信息可以作为对请求的响应发送.

尝试给定代码,但它在后台线程忙时减少了http请求性能.Program.cs文件的主要方法是:

static void Main(string[] args)
{
    //Start background thread1
    //Start background thread2
    //Around 10 background threads
    //Start host
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseUrls(ServerUrl)
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .ConfigureServices(s => s.AddRouting())
        .Configure(app => app.UseRouter(r => { (new Router()).Route(r); }))
        .Build();
    host.Run();
}
Run Code Online (Sandbox Code Playgroud)

线程以这种方式工作:

Thread t1 = new Thread(StartWork);
t1.IsBackground = true;
t1.Start();

public void StartWork()
{
    while (ApplicationIsRunning)
    {
        //Get database info >> login into remote devices (SSH) >> get information …
Run Code Online (Sandbox Code Playgroud)

c# multithreading .net-core kestrel-http-server asp.net-core

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

kestler MaxRequestBodySize上传的文件超出限制

我的茶k确实遇到了一个奇怪的问题。我无法上传超过茶est的MaxRequestBodySize的多个文件。

The expected behaviour is to throw the BadHttpRequestException when I am trying to reader this.Request.Form.Files.GetFiles(). I do expect to recieve request to controller action only once.

What is happening is that the upload action is hit a few time and browser with message "conection lost". I did not find a patter on how mamy times the action is called.

Controller action:

[HttpPost("upload")]
public IActionResult Upload()
{
    try
    {
        var files = this.Request.Form.Files.GetFiles("files");
        files.Select(async file => await this.SaveFile(file))
        return …
Run Code Online (Sandbox Code Playgroud)

.net kestrel-http-server asp.net-core

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

ASP.NET Core 2.0-提供没有扩展名的文件

我也尝试在我的网站上设置“让我们加密”。我在网上找到了很多解决方案,很遗憾,没有一个对我有用。

我在使用Apache 2和.NET Core 2.0的Debian 8.7。

我尝试将web.config(及其一些变体)放置在.well-known / acme-challenge文件夹中,以免碰运气。我在这些链接上尝试过解决方案(主要是添加web.config并添加一些代码):

https://github.com/ebekker/ACMESharp/issues/15
为letencrypt设置web.config-使用Asp.NET Core和Angular 2(Javascript-services)进行认证

我已经看到了,但这是一个已知的文件名,LE提供了随机文件名,因此我不知道如何实现它: asp.net core-如何在不扩展名的情况下提供静态文件

我知道我得到正确的URL并不是问题,就好像我将扩展名(例如.t)添加到文件中,然后将其添加到URL中一样,站点可以正确地返回文件。

这是acme-challenge中的web.config:

<?xml version = "1.0" encoding="UTF-8"?>
 <configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".*" mimeType="text/plain" />
        </staticContent>
        <handlers>
            <clear />
            <add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
        </handlers>
     </system.webServer>
 </configuration>
Run Code Online (Sandbox Code Playgroud)

这是整个web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\my.site.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是添加到Configure()中的代码:

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new …
Run Code Online (Sandbox Code Playgroud)

c# .net-core kestrel-http-server lets-encrypt asp.net-core

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

访问linux托管的ASP.NET Core 2.x web应用程序(无需nginx)

我的 ASP.NET Core 2.1 Web 应用程序在我的开发设置上完美运行。现在我想在生产中测试它。

\n\n

生产服务器是Ubuntu 18。我按照说明进行操作。我还不想设置 nginx,只是做一些快速测试,说明如下:

\n\n
\n

“带有或不带有反向代理服务器的配置\xe2\x80\x94\xe2\x80\x94 都是 ASP.NET Core 2.0 或更高版本应用程序的有效且受支持的托管配置”。

\n
\n\n

所以我构建并发布了我的项目:dotnet publish --configuration Release. \n然后在服务器上:

\n\n
    \n
  • 安装 dotnet 运行时
  • \n
  • 将文件复制到服务器 ( /var/www/myapp)
  • \n
  • 开放的端口:sudo uwf allow 5000/tcp 80/tcp
  • \n
  • 运行dotnet MyApp.dll(也尝试过sudo dotnet MyApp.dll
  • \n
\n\n

它运行时没有错误/警告,并表示它正在监听http://localhost:5000.

\n\n

在我的本地计算机上,我尝试了http://serveripaddress(和http://serveripaddress:5000)但什么也没得到(“无法连接”)。我可以通过 ssh、sftp 等访问该服务器 - 只有 http 不起作用。

\n\n

我究竟做错了什么?

\n

asp.net ubuntu kestrel-http-server asp.net-core asp.net-core-2.1

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