因此,当我尝试在Visual Studio中调试项目时,我通常会有一个或多个需要调用的服务。这些服务是单独的项目,我将在VS的单独实例中启动它们。 ASP dev服务器使用附加的临时端口号启动它们。除了我的程序正在寻找没有连接端口的IP之外,这没什么问题。 (通常它就像“localhost”一样简单!)我已经通过使用Web配置设置并在调试时更改xml以使用端口号来应对。这仍然不总是有效,偶尔我仍然需要捏造它并在代码中插入端口号作为字符串!啊!然后我必须记住在部署之前撤消所有端口放牧代码......
我想停止这样做:
string _strBaseURL = String.Format("http://{0}:2277", ConfigurationManager.AppSettings["myservice_ip"].ToString());
这里的最佳做法是什么?我是否注定要在调试VS应用程序时移植放牧?
答案 0 :(得分:2)
我通过针对IIS开发而不是Visual Studio的开发服务器来解决这个问题。 Visual Studio将我的所有项目部署到端口80上的IIS,因此您具有与部署类似的环境。在调试期间,VS附加到IIS。我还必须这样做来调试HTTPS服务。
您可以在Project属性的Web选项卡中更改它,但它要求您安装IIS和一些支持包。
答案 1 :(得分:1)
我没有遇到问题。您如何建议客户端猜测服务器正在使用的端口号?也许你可以创建一个DNS样式“端口号查找服务器”。但是,客户端也不知道该服务器使用哪个端口。
也许您可以为服务器和客户端创建.config文件,并让某人确保它们包含完全相同的数字。这将是一次性安装麻烦,他们永远不会再改变这个数字。
答案 2 :(得分:0)
您可以指定项目配置中每个项目将运行的端口。您可以在本地配置中包含端口号吗?使用IP地址/ URL显示您已经这样做了。
答案 3 :(得分:0)
我通常通过使用UriBuilder生成URI并包含端口号来解决此问题,根据需要使用app.config来定位正确的端口+ URI。但这需要客户代码在您的控制之下,因此您的里程可能会有所不同。 (注意,如果真实端口是80,则生成的字符串将删除:80,因此在实际部署中看起来更漂亮。)
我经常需要模拟正在部署的多个Web项目,但是要针对本地计算机进行调试;偶尔会有其他并发症,比如跨域认证,但这解决了大部分问题。