可以在 Visual Studio 数据库项目中使用 microsoft.web.services3 吗?

Posted

技术标签:

【中文标题】可以在 Visual Studio 数据库项目中使用 microsoft.web.services3 吗?【英文标题】:Its possible to use a microsoft.web.services3 in visual studio database project? 【发布时间】:2017-04-03 07:50:57 【问题描述】:

我已经完成了一个从 wsdl 类方法获取信息的 Windows 服务。一位同事建议我使用程序集在 sqlserver 数据库中运行作业。我想这是不可能的,但我不知道它是否可以做到。

我使用的 wsdl 是通过 Microsoft.web.services3 完成的。 Windows 服务项目有一个配置文件,其中包含必要的部分:

<configSections>
     <section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>

我也有这个参考。

<microsoft.web.services3>
    <tokenIssuer>
       <ttlInSeconds value="900000" />
    </tokenIssuer>
    <security>
       <defaultTtlInSeconds value="9000000" />
      <timeToleranceInSeconds value="9000000" />
    </security>
<web.services3>

我认为它不会起作用,但如果可能的话,我如何在数据库项目中执行此操作以在一个程序集中构建?

【问题讨论】:

【参考方案1】:

是的,这是可能的,但这并不是真正的“好”。 您需要做的是创建一个 SQL Server CLR 程序集,您可以在其中使用 Web 服务逻辑(调用、处理等)。

查看 [https://msdn.microsoft.com/en-us/library/w2kae45k(v=vs.100).aspx] 了解如何操作

不利的是,您在 SQL Server 内存中运行此 CLR。如果您没有以正确的方式处理您的对象,您的 SQL Server 内存可能会被原本不应该存在的对象填满。

其他解决方案? 如果您需要数据库中的这些数据,您可能需要创建一个进程来调用 Web 服务并将数据存储在数据库中...

【讨论】:

我会尝试第一个解决方案,如果可行,我会通知您。谢谢 嗨,马克,我昨天做了,但遇到了一个新问题。当我的后端同事添加程序集时,其他 .dll 依赖项导致了很多错误。我可以在同一个 .dll 中获取所有依赖项吗?该项目有一些 .dll 依赖项,例如 epplus、razor、mvc、services3... 我不确定您为什么要在 Web 服务中使用所有这些前端程序集?确保 web 服务只做它应该做的事情。 Web 服务不应该与 razor/mvc 做任何事情。也许你想从前端调用服务,但它不应该被包括在内......回到你的对象/类的设计并确保一切都是非依赖的 我们有一些用于导出 excel 的常用库,还有一些 web utils...每个都有自己的引用。当我添加引用以使用序列化程序类时,它的项目具有这些引用,当我们尝试在后端添加 dll 时,它会崩溃,因为它无法获取这些引用。我不知道是否理解我,对不起我的英语不好。

以上是关于可以在 Visual Studio 数据库项目中使用 microsoft.web.services3 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何添加宏Visual Studio 2019

Visual Studio 2010 数据库项目部署

是否可以在 Visual Studio 数据库项目中创建计算列?

发布 Visual Studio 数据库项目时可以忽略登录吗?

为啥我不能在 Visual Studio 中禁用预编译头文件?

是否可以使用 VS2008 开发版打开 Visual Studio 2008 数据库项目?