主机服务,用于从UWP中的Web服务接收通知

时间:2018-03-06 08:52:36

标签: wcf uwp servicehost

我会解释一下我试图解决的用例,它会让你清楚地了解我需要什么?

我们在设备上托管了一个Web服务,我可以通过他们共享的wsdl文件来使用服务公开的API。但是对于某些功能,我们需要托管一个服务,该服务从其公开的wsdl实现一个特定的接口。

我必须托管服务并将其中一个订阅调用API中的URL发送到服务。

如果我使用实现该合同的类来托管服务,那么设备上的Web服务会向我的自托管服务发送通知,我可以捕获响应。

现在我无法使用实现该合同的类对象来托管服务,所有这些都可以使用“System.ServiceModel”中的ServiceHost类来完成,这在UWP中是不可用的。

我需要替代ServiceHost来实现上述用例。

我尝试过的一种方法是在相同的UWP应用解决方案下添加.NET标准项目和Win Runtime项目。

我在UWP项目中添加了Runtime组件proj引用,并在Win Runtime Component Proj中添加了.NET标准项目引用。

我现在可以将.NET标准项目定位到目标.net框架以及更改.csproj文件,现在可以访问ServiceHost,但是在运行时

我得到System.TypeLoadException以间接包含ServiceHost。

System.TypeLoadException   的HResult = 0x80131522   Message =无法从程序集'System.ServiceModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.ServiceModel.ServiceHost'。   来源= ClassLibrary   堆栈跟踪:    在C:\ Users \ ssiddhardha \ source \ repos \ App3 \ ClassLibrary \ Class1.cs中的ClassLibrary.Class1.HostLocalService():第15行    在C:\ Users \ ssiddhardha \ source \ repos \ App3 \ RuntimeComponent1 \ Class1.cs中的RuntimeComponent1.Class1.WrapperHost():第15行    位于C:\ Users \ ssiddhardha \ source \ repos \ App3 \ App3 \ MainPage.xaml.cs中的App3.MainPage.OnNavigatedTo(NavigationEventArgs e):第34行

1 个答案:

答案 0 :(得分:0)

{。1}}类在.Net Standard 2.0中不可用。您可以看到:https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0&term=System.ServiceModel.ServiceHost

因此,您无法在UWP项目中使用它。如果您必须使用此API,则可以考虑使用Brokered Windows Runtime Components for a side-loaded UWP app