ASP.Net 核心 2 - powershell 远程处理仅在 IIS Express 中有效(Kestrel 不工作)
ASP.Net core 2 - powershell remoting works only in IIS Express (Kestrel not working)
我正在尝试将我的 ASP.Net Core 2 应用程序(.NET Framework 4.6.2 作为平台)的 powershell 会话连接到我的 Exchange 服务器。使用 IIS Express 时代码运行完美(在 Visual studio 中调试),但我在使用 Kestrel 时运气不佳。
Exchange 设置正确。我可以使用 powershell 或使用以下代码与 IIS Express 成功连接。
创建 powershell 连接:
var psOptions = new PSSessionOption()
{
SkipCACheck = true,
SkipCNCheck = true,
SkipRevocationCheck = true
};
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("https://" + _server + "/powershell?serializationLevel=Full"),
"http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
connectionInfo.SetSessionOptions(psOptions);
_runspace = RunspaceFactory.CreateRunspace(connectionInfo);
_runspace.Open();
错误:
Hosting environment: Production
Content root path: path
Now listening on: http://127.0.0.1:12006
Application started. Press Ctrl+C to shut down.
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLOGQUBGFLJ1", Request id "0HLOGQUBGFLJ1:00000001": An unhandled exception was thrown by the application.
System.Management.Automation.Remoting.PSRemotingTransportException: Connecting to remote server hostname failed with the following error message : The WinRM client sent a request to an HTTP server and got a response saying the requested HTTP URL was not available. This is usually returned by a HTTP server that does not support the WS-Management protocol. For more information, see the about_Remote_Troubleshooting Help topic.
at System.Management.Automation.Runspaces.AsyncResult.EndInvoke()
Exchange 端出现问题。缺少 WinRM HTTPS 侦听器。您可以使用命令 winrm e winrm/config/listener
.
检查监听器
PS C:\WINDOWS\system32> winrm e winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = <hidden>
Listener
Address = *
Transport = HTTPS
Port = 5986
Hostname = <hidden>
Enabled = true
URLPrefix = wsman
CertificateThumbprint = <hidden>
ListeningOn = <hidden>
我正在尝试将我的 ASP.Net Core 2 应用程序(.NET Framework 4.6.2 作为平台)的 powershell 会话连接到我的 Exchange 服务器。使用 IIS Express 时代码运行完美(在 Visual studio 中调试),但我在使用 Kestrel 时运气不佳。
Exchange 设置正确。我可以使用 powershell 或使用以下代码与 IIS Express 成功连接。
创建 powershell 连接:
var psOptions = new PSSessionOption()
{
SkipCACheck = true,
SkipCNCheck = true,
SkipRevocationCheck = true
};
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("https://" + _server + "/powershell?serializationLevel=Full"),
"http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
connectionInfo.SetSessionOptions(psOptions);
_runspace = RunspaceFactory.CreateRunspace(connectionInfo);
_runspace.Open();
错误:
Hosting environment: Production
Content root path: path
Now listening on: http://127.0.0.1:12006
Application started. Press Ctrl+C to shut down.
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLOGQUBGFLJ1", Request id "0HLOGQUBGFLJ1:00000001": An unhandled exception was thrown by the application.
System.Management.Automation.Remoting.PSRemotingTransportException: Connecting to remote server hostname failed with the following error message : The WinRM client sent a request to an HTTP server and got a response saying the requested HTTP URL was not available. This is usually returned by a HTTP server that does not support the WS-Management protocol. For more information, see the about_Remote_Troubleshooting Help topic.
at System.Management.Automation.Runspaces.AsyncResult.EndInvoke()
Exchange 端出现问题。缺少 WinRM HTTPS 侦听器。您可以使用命令 winrm e winrm/config/listener
.
PS C:\WINDOWS\system32> winrm e winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = <hidden>
Listener
Address = *
Transport = HTTPS
Port = 5986
Hostname = <hidden>
Enabled = true
URLPrefix = wsman
CertificateThumbprint = <hidden>
ListeningOn = <hidden>