Windows 10 1703 (15063.483) で自己ホスト型 webapi アプリケーションを使用しようとすると、例外が発生し始めます。
VS2017: バージョン 15.2 (26430.15) リリース VisualStudio.15.Release/15.2.0+26430.15
VS を管理者モードで実行してみましたが、非管理者モードと同じ結果になりました。私のアプリはhttp://192.168.12.118:50231を使用しようとしています プロジェクトは .NET 4.5 WPF アプリケーションです。
アプリが初めて失敗した後、次のことを行いました。
- netsh http 削除 urlacl url= http://+:50231/
netsh http add urlacl url= http://+:50231/ user=AD\USER
netsh http show url => 登録OKを表示
- netstat -o -n -a => そのポート、任意の IP で実行されている他のアプリは表示されません
私が使用しているコードは次のとおりです。
HttpSelfHostConfiguration config = new HttpSelfHostConfiguration(new Uri("http://" + MyIP + ":" + MyPort));
config.MaxReceivedMessageSize = Int32.MaxValue - 1000;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Startup server
server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
これは、実行が OpenAsync にヒットしたときに発生する例外です。
.Inner Type: AddressAlreadyInUseException
.Inner Message: HTTP could not register URL http://+:50231/ because TCP port 50231 is being used by another application.
.Inner Stack: at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.CommunicationObject.EndOpen(IAsyncResult result)
at System.Web.Http.SelfHost.HttpSelfHostServer.OpenListenerComplete(IAsyncResult result)
..Inner Type: HttpListenerException
..Inner Message: The process cannot access the file because it is being used by another process
..Inner Stack: at System.Runtime.AsyncResult.End[TAsyncResult] (IAsyncResult result)
at System.ServiceModel.Channels.CommunicationObject.EndOpen(IAsyncResult result)
at System.Web.Http.SelfHost.HttpSelfHostServer.OpenListenerComplete(IAsyncResult result)`
ティア