我最近开始创建一个控制台应用程序,它将通过流程命令行启动我的api。我有2个API(1个Web API和1个Signalr套接字API)。
不幸的是,当我尝试通过UseUrls(urls)
在“程序主要方法”中设置api的端口时,情况变得有些奇怪。
似乎webApi服务器已启动,我可以通过浏览至所需位置https://localhost:7001
来访问该页面。
BUT-> 如果我尝试访问位于ValuesController旁的webApi上Controllers文件夹内的控制器(名为CelestialObjectController),则会出现错误500! https://localhost:7001/api/CelestialObject
<-返回状态500`
这很有趣-> 您是否知道在创建新项目时VS生成的ValuesController?实际上,我可以联系此控制器并阅读Get方法!
https://localhost:7001/api/values
起作用!..我可以看到值1和值2。....为什么这样做有效?.....为什么我自己的控制器即使出现错误500也给我一个错误500与ValuesController相同的目录?
另外,如果我修改ValuesController的值,则可以在重新编译和调试时看到更改。
只需提一下,.UseUrls($"https://*:{ProgramOptions.SocketPort}")
方法似乎就可以在我的SocketApi上运行,该套接字在SignalR的7002端口上运行。我可以连接到套接字集线器,并且调用https://localhost:7002/api/value
似乎也可以。我尚未测试添加控制器,因为我的socketapi不应依赖控制器,而应更多地依赖集线器,并且在尝试通过信号器客户端连接到该地址和端口的集线器时,它似乎可以正常工作
我发现的另一件事是,如果我调试每个api个体,一切似乎都可以正常工作,并且我可以检索数据,似乎它不能在生产模式下运行或作为进程启动时运行... >
我确实尝试过更改launchSettings.json和项目属性中的Web设置,但这似乎使事情变得混乱,因此我将更改恢复为默认设置,现在我希望可以在此处找到答案!
有人可以向我解释此行为以及我可能要做的事,以便正确设置端口?
WebAPI中Program.cs中的CreateWebHostBuilder方法如下所示(与SocketAPI中的基本相同)
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls($"https://*:{ProgramOptions.WebPort}");
对于这种情况的任何帮助,我们深表感谢!
编辑:
如果我查看请求/响应标头,则会看到以下内容: (来自Firefox Devtools)
响应标题(111 B)
内容长度
0
日期
2019年1月24日星期四08:40:22 GMT
服务器
红
请求标头(446 B)
接受
text / html,application / xhtml + xm ... plication / xml; q = 0.9, / ; q = 0.8
接受编码
gzip,放气,br
接受语言
de,en-US; q = 0.7,en; q = 0.3
缓存控制
最大年龄= 0
连接
活着
Cookie
Culture = {“ Language”:“ de”};同意= {“等级”:3}
DNT
1个
主持人
本地主机:7001
不安全升级请求
1个
用户代理
Mozilla / 5.0(Windows NT 10.0;…)Gecko / 20100101 Firefox / 64.0