【问题标题】:HttpListenerException in Worker role when Start listening开始侦听时 Worker 角色中的 HttpListenerException
【发布时间】:2012-03-30 07:07:47
【问题描述】:

我正在将我的 C# 控制台应用程序迁移到 Azure。我的应用程序使用 HttpListener 在特定端口上侦听 http 请求。当我以 Worker 角色在本地尝试以下测试代码时,我得到一个异常(ComputeEmulator 屏幕中的类似打印输出)说:

HttpListenerException - “该进程无法访问该文件,因为它正被另一个进程使用”。

注意:我已在服务配置文件中将端口配置为 2020。我还注意到从 RoleEnvironment show 2020 检索到的端口,但这是否假设显示不同的端口,因为它应该被重新映射到与配置的外部端口号不同的端口?

// ========== Test code starts ==============

string ipAddress = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Ecard"].IPEndpoint.Address.ToString();
int port = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Ecard"].IPEndpoint.Port;

string uri = @"http://" + ipAddress + ":" + port + "/";

try
{

    httpListener = new HttpListener();
    httpListener.Prefixes.Add(uri);
    httpListener.Start();

}
catch (Exception e)
{
    Trace.WriteLine(e.Message);
}

// Test code ends.

非常感谢您的帮助。

【问题讨论】:

    标签: azure httplistener


    【解决方案1】:

    虽然我对 Azure 了解不多,但我对 http.sys/HttpListener 了解一点,所以我尝试提供帮助:httpListener.Prefixes.Add(ur) 失败,除非进程在管理员/提升用户中运行语境。使 Prefixes.Add() 不失败的另一种方法是使用 netsh.exe 实用程序或以编程方式使用 HttpAPI 预先对有问题的 url 进行 ACL,这两种方法也可以在管理员/提升的用户上下文中运行。除非 Azure 操作环境对运行代码的用户上下文的 url 进行 ACL(授予访问权限),否则您可能需要寻找使用 HttpListener 以外的选项。

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2015-10-25
      相关资源
      最近更新 更多