我在azure应用程序服务中托管了一个Asp.net核心Web API。我的Web API应该连接到一台或多台Premise Windows服务器上以创建DNS记录。 Windows服务器正在运行DNS服务。我正在使用System.Management连接到本地Windows服务器。
但是,我无法从azure应用程序服务连接到远程服务器。我肯定相信我缺少某种配置,但是我不知道。
这是我的代码:
using System.Management;
public static ManagementScope ConnectDNSServer(string dnsServerName, PCSCredential useMyInfo)
{
ConnectionOptions options = new ConnectionOptions
{
Username = useMyInfo.WindowsDomain + "\\" + useMyInfo.UserName,
Password = useMyInfo.PassString
};
try
{
ManagementScope scope = new ManagementScope(@"\\" + dnsServerName + "\\root\\MicrosoftDNS", options);
scope.Connect();
return scope;
}
catch
{
//ManagementScope scopeEx = new ManagementScope();
}
return null;
}
我收到此错误:
System.Runtime.InteropServices.COMException (0x800706BA): The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
答案 0 :(得分:0)
在Azure App Service上-无论地址如何,应用程序都无法使用端口445、137、138和139连接到任何地方。换句话说,即使连接到非私有IP地址或虚拟网络的地址,不允许连接到端口445、137、138和139。
其他信息,标准/本机Azure Web Apps在称为沙箱的安全环境中运行。每个应用程序都在其自己的沙箱中运行,从而将其执行与同一台计算机上的其他实例隔离开来,并提供其他程度的安全性和隐私性,否则这些安全性和隐私性将是不可用的。因此,这似乎是由于沙箱所致。
在这种环境中,可以通过Internet访问应用程序的唯一方法是通过已经公开的HTTP(80)和HTTPS(443)TCP端口;否则,不能通过Internet访问应用程序。应用程序可能不会在其他端口上侦听来自Internet的数据包。 尝试连接到本地地址(例如localhost,127.0.0.1)和计算机自己的IP将失败,除非同一沙箱中的另一个进程在目标端口上创建了侦听套接字: https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening