2017-01-16 110 views
0

我想在Azure服務結構中的ASP.NET核心應用程序中使用WebListener。在Azure服務結構中的ASP.NET核心中使用WebListener

我已經做了以下內容:

Task<string> ICommunicationListener.OpenAsync(CancellationToken cancellationToken) 
{ 
    var endpoint = FabricRuntime.GetActivationContext().GetEndpoint(_endpointName); 

    string serverUrl = $"{endpoint.Protocol}://{FabricRuntime.GetNodeContext().IPAddressOrFQDN}:{endpoint.Port}"; 

    _webHost = new WebHostBuilder().UseWebListener() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseStartup<Startup>() 
       .UseUrls(serverUrl) 
       .Build(); 

    _webHost.Start(); 

    return Task.FromResult(serverUrl); 
} 

可惜的是,這並不工作。我創建了一個Web API控制器,當我把這個返回404

當我使用紅隼它的工作原理:

_webHost = new WebHostBuilder().UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .UseStartup<Startup>() 
    .UseUrls(serverUrl) 
    .Build(); 

這是我projects.json:

{ 
"dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.Server.WebListener": "1.1.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.1.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.ServiceFabric": "5.3.301", 
    "Microsoft.ServiceFabric.Data": "2.3.301", 
    "Microsoft.ServiceFabric.Services": "2.3.301" 
}, 

"commands": { 
    "weblistener": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener" 
}, 

"tools": { 
}, 

"frameworks": { 
    "net452": { 
     "dependencies": { 
     } 
    } 
}, 

"buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
}, 

"publishOptions": { 
    "include": [ 
     "wwwroot", 
     "**/*.cshtml", 
     "appsettings.json", 
     "web.config" 
    ] 
}, 

"scripts": { 
} 
} 

我錯過什麼? 使用Web Listener的原因是我想將Windows身份驗證與我的Intranet應用程序一起使用,以便用戶不必手動輸入用戶名和密碼。

回答

1

嘗試使用通配符的主機,像這樣:

string serverUrl = $"{endpoint.Protocol}://+:{endpoint.Port}"; 
相關問題