如何使用 Visual Studio 19 从网站步入 WCF asp.net 服务应用程序

Posted

技术标签:

【中文标题】如何使用 Visual Studio 19 从网站步入 WCF asp.net 服务应用程序【英文标题】:How to step into WCF asp.net service app from website using visual studio 19 【发布时间】:2021-03-23 21:44:24 【问题描述】:

我有一个遗留的 vb.net restful api 作为服务编写(service1.svc,.net framework 4.0)。当我在 VS2019 中运行它时,它会启动 WCF 测试客户端,其中列出了我的所有方法并为每个方法提供一个测试页面。这很好,但我希望能够从调用网站(也在 VS2019 中运行)步入正在运行的实例。使用 ServiceStack 和其他 API 应用程序,我使用它的效果很好。我在 localhost 上的不同端口下运行 API,当 Web 应用调用该路由时,任何断点都会被命中。

所以在这种情况下,例如我的网络应用程序将调用:

https://myServer.com/Service1.svc/v1/GetSomeData?value=1

如果我用本地主机替换服务器:

http://localhost:61202/Service1.svc/v1/GetSomeData?value=1

我收到 400 错误请求。

有趣的是,如果我像这样破坏 localhost url(我做过一次):

http://localhost:61202/Service1.svcservice1.svc/v1/GetSomeData?value=1

WCF 应用程序在 Application_Error 事件中的 global.asax.vb 中中断,但异常:

"The service '/Service1.svcservice1.svc' does not exist."

所以它实际上是在调用服务......这很好。

使用有效的 url,当我进行调用时,API 中 Application_BeginRequest 和 Application_AuthenticateRequest 处的断点不会被命中,所以它没有走那么远,这让我很惊讶。

我想我已经接近让它工作了,但我不知道如何在这里进行。我相信 localhost url 格式正确,因为它与生产服务器上的格式相同。它必须是 API 项目中的其他配置。

欢迎提出任何建议!

【问题讨论】:

【参考方案1】:

RESTful服务需要确认你使用的是webhttpbinding,然后如何正确发布wcf服务参考这个链接:WCF Service Publishing

【讨论】:

我在项目中有一个 web.config 和 Service1.svc 文件,当项目被复制到生产服务器中的 IIS 时,它运行得很好,javascript AJAX 调用可以访问服务,所以它似乎设置正确。我不相信任何部署工具被用来生成可部署版本,我认为它是“手动”构建的,所以我是个问题。 可以尝试官方文档中的方法发布服务。

以上是关于如何使用 Visual Studio 19 从网站步入 WCF asp.net 服务应用程序的主要内容,如果未能解决你的问题,请参考以下文章

从命令行打开一个 Visual Studio 网站(不是解决方案)

visual studio (VS) 网站项目配置远程发布到IIS

如何在 Visual Studio 2010 中使用 Crystal Reports 创建报表

我可以通过 Visual Studio 从 ASP.NET 网站导出生成的 html 页面吗?

如何从Visual Studio中排除文件编译?

Visual Studio使用Web Deploy远程发布网站及其配置