0

我正在尝试向可以在本地运行的用户提供 WPF 应用程序。

我目前有一个 WebAPI 项目,它作为 API 用于正常修改数据库中的数据。这完全按预期工作。

我有一个类库,我编写了一些运行 WPF 项目所必需的内部类,我将提供给用户 - 并引用了这个类包。

我想创建这个类库,以便为他们提供的 WPF 项目具有最少的可编辑代码,他们可能会更改和破坏应用程序。这一切都很好并且设置好了。

我创建的 WPF 项目提供了一个用户界面,供用户查看和修改本地数据库中的数据(随项目提供)。向用户提供此项目的目的是让他们可以在项目中修改或创建可用于扩展我们的解决方案的新类。

我有本地数据库、WPF 项目和类库都按预期设置和工作,但是,我想包括 WebAPI 项目,以便当他们在本地运行 WPF 应用程序时,WebAPI 的一个实例也在本地运行背景 - 在 .NET 本地网络服务器上,就像我在 WebAPI 项目中按运行一样。

然而,这个问题是我宁愿不只是给他们整个 WebAPI 项目以在 WPF 解决方案中加载和运行自己,而是希望 WebAPI 的实例在 WPF 应用程序开始时才开始,这样他们可能要么通过 WPF 接口或通过将请求从另一个源发送到本地运行的 API 来操作数据库数据。

当 WPF 应用程序启动时,是否可以在 WPF 解决方案中不包括 WebAPI 项目的情况下启动 WebAPI 的实例(就像我在 WebAPI 项目中按 F5 一样)?

我想在 WPF 项目中简单地包含一个 WebApi 的 DLL,并在 WPF 应用程序启动时在本地 .NET 网络服务器中启动它的一个实例。这可能吗?您可以从另一个引用或包含该 DLL 的独立项目将构建的 DLL 启动到本地网络服务器吗?

我正在研究 Cassini 和其他一些选项,例如将其转换为 EXE,但我认为它们比我需要的要复杂得多,如果有一种我没有偶然发现的更简单的方法,我不想开始修改代码在线呢。

4

2 回答 2

1

您可以向他们提供已发布的 WebAPI 文件并让他们在本地 IIS 中设置一个实例,然后让 WPF 项目引用该本地实例。然而,这可能只有在用户量相对较低的情况下才可行。

于 2014-11-26T18:22:09.833 回答
0

对于任何想知道如何做到这一点的人,使用editas的想法,我将发布的文件放入一个文件夹中,该文件夹将包含在提供给用户的包中,并在 WPF 应用程序启动时调用到引用的类库以初始化API 使用我写的一个方法:InitialiseAPI().

此方法通过调用一个 EXE 来工作,该 EXE 在用户计算机上静默启动 IIS Express 实例,并将“已发布”文件附加到该实例。这完美地工作,我还创建了应用程序退出方法来在退出时销毁 IIS 实例,因此当他们重新启动应用程序时,它不会抛出正在使用的端口异常。

于 2014-11-27T17:02:43.887 回答