gpt4 book ai didi

azure - 如何在 IIS 上托管 BOT Framework V4 BOT

转载 作者:行者123 更新时间:2023-12-01 05:03:07 33 4
gpt4 key购买 nike

我在 IIS 上托管我的 BOT Framework V4 BOT。服务器配置如下

  1. Windows Server 2012 R2
  2. IIS 8.5

我还安装了 dotnet-hosting-2.2.1-win.exe,这是托管 BOT V4 所必需的。我已将应用程序池设置为“无托管代码”。我已经设置了 Startup.cs 文件所在文件夹的路径。另请查找 BOT 生成的日志附件。尽管如此,它仍然不起作用,错误如下

HTTP 错误 403.14 - 禁止Web 服务器配置为不列出该目录的内容。

Detailed Error Information:
Module DirectoryListingModule
Notification ExecuteRequestHandler
Handler StaticFile
Error Code 0x00000000
Requested URL https://myServer/ConfRoomBOT/
Physical Path ProjectPath
Logon Method Anonymous
Logon User Anonymous
Request Tracing Directory C:\inetpub\logs\FailedReqLogFiles

下面是web.config代码

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\ConfRoom.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
<system.net>
<defaultProxy useDefaultCredentials="false">
<proxy usesystemdefault="False" proxyaddress="http://xx.xxx.xx.xxx:8080" bypassonlocal="True" />
</defaultProxy>
</system.net>
</configuration>

以下是BOT生成的日志

Hosting environment: Production Content root path: E:\Project\DotNetCoreApps\ConfRoomPub\WithPII\publish Now listening on: http://127.0.0.1:41826 Application started. Press Ctrl+C to shut down. info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 GET http://example.com/ConfRoom/ info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 GET http://example.com/ConfRoom/ info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2] Sending file. Request path: '/default.htm'. Physical path: 'E:\Project\DotNetCoreApps\ConfRoomPub\WithPII\publish\wwwroot\default.htm' info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[6] The file /default.htm was not modified info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 184.4402ms 304 text/html info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 188.1919ms 200 text/html info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 POST http://example.com/ConfRoom/api/messages application/json; charset=utf-8 373 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 POST http://example.com/ConfRoom/api/messages application/json; charset=utf-8 359 fail: Microsoft.AspNetCore.Server.Kestrel[13] Connection id "0HLJNNKCOIPS7", Request id "0HLJNNKCOIPS7:00000002": An unhandled exception was thrown by the application. System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'https://login.botframework.com/v1/.well-known/openidconfiguration'. ---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'https://login.botframework.com/v1/.well-known/openidconfiguration'. ---> System.Net.Http.HttpRequestException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at
System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage
request, CancellationToken cancellationToken) at
System.Threading.Tasks.ValueTask
1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1
creationTask) at System.Threading.Tasks.ValueTask
1.get_Result()
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task1 sendTask,
HttpRequestMessage request, CancellationTokenSource cts, Boolean
disposeCts) at
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String
address, CancellationToken cancel) --- End of inner exception stack
trace --- at
Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String
address, CancellationToken cancel) at
Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String
address, IDocumentRetriever retriever, CancellationToken cancel) at
Microsoft.IdentityModel.Protocols.ConfigurationManager
1.GetConfigurationAsync(CancellationToken cancel) --- End of inner exception stack trace --- at Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync(CancellationToken
cancel) at
Microsoft.IdentityModel.Protocols.ConfigurationManager
1.GetConfigurationAsync() at Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.ValidateTokenAsync(String jwtToken, String channelId) at Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.GetIdentityAsync(String scheme, String parameter, String channelId) at Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.GetIdentityAsync(String authorizationHeader, String channelId) at Microsoft.Bot.Connector.Authentication.ChannelValidation.AuthenticateChannelToken(String authHeader, ICredentialProvider credentials, HttpClient httpClient, String channelId) at Microsoft.Bot.Connector.Authentication.ChannelValidation.AuthenticateChannelToken(String authHeader, ICredentialProvider credentials, String serviceUrl, HttpClient httpClient, String channelId) at Microsoft.Bot.Connector.Authentication.JwtTokenValidation.ValidateAuthHeader(String authHeader, ICredentialProvider credentials, IChannelProvider channelProvider, String channelId, String serviceUrl, HttpClient httpClient) at Microsoft.Bot.Connector.Authentication.JwtTokenValidation.AuthenticateRequest(IActivity activity, String authHeader, ICredentialProvider credentials, IChannelProvider provider, HttpClient httpClient) at Microsoft.Bot.Builder.BotFrameworkAdapter.ProcessActivityAsync(String authHeader, Activity activity, BotCallbackHandler callback, CancellationToken cancellationToken) at Microsoft.Bot.Builder.Integration.AspNet.Core.Handlers.BotMessageHandler.ProcessMessageRequestAsync(HttpRequest request, IAdapterIntegration adapter, BotCallbackHandler botCallbackHandler, CancellationToken cancellationToken) at Microsoft.Bot.Builder.Integration.AspNet.Core.Handlers.BotMessageHandlerBase.HandleAsync(HttpContext httpContext) at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Builder.Extensions.UsePathBaseMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication1
application) fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLJNNKCOIPS6", Request id "0HLJNNKCOIPS6:00000002": An unhandled exception was thrown by the
application. System.InvalidOperationException: IDX20803: Unable to
obtain configuration from:
'https://login.botframework.com/v1/.well-known/openidconfiguration'.<br/>
at
Microsoft.IdentityModel.Protocols.ConfigurationManager
1.GetConfigurationAsync(CancellationToken cancel) at Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync()
at
Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.ValidateTokenAsync(String
jwtToken, String channelId) at
Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.GetIdentityAsync(String
scheme, String parameter, String channelId) at
Microsoft.Bot.Connector.Authentication.JwtTokenExtractor.GetIdentityAsync(String
authorizationHeader, String channelId) at
Microsoft.Bot.Connector.Authentication.ChannelValidation.AuthenticateChannelToken(String
authHeader, ICredentialProvider credentials, HttpClient httpClient,
String channelId) at
Microsoft.Bot.Connector.Authentication.ChannelValidation.AuthenticateChannelToken(String
authHeader, ICredentialProvider credentials, String serviceUrl,
HttpClient httpClient, String channelId) at
Microsoft.Bot.Connector.Authentication.JwtTokenValidation.ValidateAuthHeader(String
authHeader, ICredentialProvider credentials, IChannelProvider
channelProvider, String channelId, String serviceUrl, HttpClient
httpClient) at
Microsoft.Bot.Connector.Authentication.JwtTokenValidation.AuthenticateRequest(IActivity
activity, String authHeader, ICredentialProvider credentials,
IChannelProvider provider, HttpClient httpClient) at
Microsoft.Bot.Builder.BotFrameworkAdapter.ProcessActivityAsync(String
authHeader, Activity activity, BotCallbackHandler callback,
CancellationToken cancellationToken) at
Microsoft.Bot.Builder.Integration.AspNet.Core.Handlers.BotMessageHandler.ProcessMessageRequestAsync(HttpRequest
request, IAdapterIntegration adapter, BotCallbackHandler
botCallbackHandler, CancellationToken cancellationToken) at
Microsoft.Bot.Builder.Integration.AspNet.Core.Handlers.BotMessageHandlerBase.HandleAsync(HttpContext
httpContext) at
Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext
context) at
Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(HttpContext
httpContext) at
Microsoft.AspNetCore.Builder.Extensions.UsePathBaseMiddleware.Invoke(HttpContext
context) at
Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication
1 application) info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 21679.9889ms 500 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 14958.2414ms 500 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] Request starting HTTP/1.1 POST http://127.0.0.1:41826/CONFROOM/iisintegration 0 info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 0.373ms 202 Application is shutting down...

请帮忙。谢谢。

最佳答案

我认为 Drew Marsh 在他的回复中发现了问题,这可能是 web.config 问题。

如果您要在 IIS 中托管 .net core 应用程序,IIS 仍需要应用程序目录中的 web.config,该目录至少具有处理程序映射和 aspNetCore 路径。

基本上,IIS 必须知道该应用程序是 .net core 应用程序以及要运行的代码。

我可能是错的,但这看起来像是将所有内容都视为静态文件。

I get this error if I remove the web.config from a working .net core app hosted in IIS.

看起来与你的错误几乎相同,我也犯了类似的错误。

我通常很幸运地将我的项目发布为 IIS Web 部署包。这往往会创建所有必要的位。

工作的 web.confg 可能看起来像这样。

<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\blagh.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>

关于azure - 如何在 IIS 上托管 BOT Framework V4 BOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54123137/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com