我会解释一下我试图解决的用例,它会让你清楚地了解我需要什么?
我们在设备上托管了一个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行
答案 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。