有什么办法让 OWIN 托管 SOAP 服务吗?

2023-11-30

如何让 OWIN 托管 SOAP 端点(不关心是否涉及 WCF,SOAP 提供 WSDL,这使得某些客户端更容易使用服务,这就是我想要 SOAP 和 REST 的原因)

我怀疑答案是:实现您自己的托管 SOAP 端点的中间件。如果这就是答案,那就这样吧,但这需要大量工作,所以我可能最终会坚持使用 WCF 并避免使用 OWIN(如果是这样的话)。我很难相信还没有人实现 SOAP 托管中间件......


通常,我们喜欢在我们的服务上同时使用 REST 和 SOAP 端点;目前我们使用 IIS 和 WCF Restful 位来托管 SOAP[ServiceContract]/[OperationContract]属性,其余的定义为[WebInvoke]属性,有了这些属性,服务就不需要为不同的端点类型重新实现。

我们只需使用 ASP.NET 路由来添加新的ServiceRoute向 URI/REST 添加剩余绑定,其服务与向 URI/SOAP 绑定肥皂相同。

现在我们正在考虑做一些新的服务工作,我想继续使用 OWIN,这样我们就可以在托管不可知论的情况下实现我们的新服务,因为某些服务将由 Windows 服务托管提供更好的服务,而另一些服务则由 IIS 服务提供更好的服务托管。

我摆弄了所有的事情,到目前为止我还没有想出获得 OWIN 托管的 SOAP 端点的方法。我通过让我的服务继承来很好地处理其余的事情ApiController然后在 OWIN 应用程序中使用这个小代码片段Configuration method:

    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();
        app.UseWebApi(config);
        [...]

MSDN 上有一个自定义 OWIN 中间件示例,演示了如何支持 SOAP 请求。它不是通用 WCF 主机,但可能足以在 ASP.NET Core 应用程序中公开现有的 WCF 服务(即 [ServiceContract/OperationContract])。该示例不包括对 [WebGet/WebInvoke] 的支持,但可能足以帮助您入门。

https://blogs.msdn.microsoft.com/dotnet/2016/09/19/custom-asp-net-core-middleware-example/

如果您的主要目标只是开始使用 OWIN 编写新服务并且您仍然计划将它们托管在 IIS 中 using Microsoft.Owin.Host.SystemWeb。您可以忽略 OWIN 管道中的 WCF 请求并允许 IIS ASP.NET 管道处理它们。这将使您能够编写 OWIN 中间件和传统 WCF 端点组合的服务。

public static class WCFAppBuilderExtensions
{
    public static IAppBuilder IgnoreWCFRequests(this IAppBuilder builder)
    {
        return builder.MapWhen(context => IsWCFRequest(context), appBuilder =>
        {
            // Do nothing and allow the IIS ASP.NET pipeline to process the request
        });
    }

    private static bool IsWCFRequest(IOwinContext context)
    {
        // Determine whether the request is to a WCF endpoint
        return context.Request.Path.Value.EndsWith(".svc", StringComparison.OrdinalIgnoreCase);
    }
}

然后致电IgnoreWCFRequests配置应用程序时的扩展方法。

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();
        WebApiConfig.Register(config);
        app
            .IgnoreWCFRequests()
            .UseWebApi(config)
            .Run(context =>
            {
                return context.Response.WriteAsync("Default Response");
            });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么办法让 OWIN 托管 SOAP 服务吗? 的相关文章

随机推荐

  • 请求在 Apple 设备上全屏显示 HTML5 视频

    大家好 我有自定义全屏图标 可以在我的视频上触发全屏 一切都很好 只是它不能在苹果设备上运行 你知道如何解决这个问题吗 fullscreen btn click function fullscreen true var mediaEleme
  • 在 Android Studio 中创建单独的测试模块/项目

    我使用的是 Android Studio 版本 0 8 14 目前 新建Android项目后 默认是test源码文件夹androidTest位于src的文件夹app模块 与main 其中包含应用程序源代码 但是 如果出于任何特定原因 我想将
  • 将异常从 Servlet 重定向到默认错误 JSP 的正确技术是什么?

    我需要有一个默认的错误 JSP 页面 当 servlet 抛出异常时显示该页面 并且该页面将显示堆栈跟踪 我怎么做 是否有正确的技术 由 API 提供 或者我必须手动执行 我的意思是 将抛出的异常作为属性发送 然后自己处理它 Thanks
  • Python/pygame - 将图像转换为视频

    我正在使用 python 中的 Pygame 模块用网络摄像头拍照 问题是我想导出视频文件 不关心什么类型 以在其他地方使用 由于pygame无法直接导出视频 我猜有两种方法可以做到 以某种方式将 Pygame 创建的照片拼接成视频 我的首
  • jQuery $.get() 函数成功并返回 200,但在 Firefox 中没有返回任何内容

    我正在编写我的第一个 jQuery 但遇到了问题jQuery get 我称之为 get url updateList 其中 updateList 的定义如下 function updateList data if data contentl
  • 代码先创建表

    我正在关注this教程 我尝试在用户配置文件表中添加一些新列 我尝试创建一个新表 public class UsersContext DbContext public UsersContext base DefaultConnection
  • ReferenceError:未定义要求(Webstorm)

    尝试做一些非常基本的事情 但遇到了障碍 var mongoose require mongoose mongoose connect mongodb localhost jetbrains var Product mongoose mode
  • 如何在 Mac OS X 中处理 python 中 raw_input() 的 EOFError

    我的 python 程序有两次调用raw input 首先raw input 是从用户那里获取多行输入 用户可以发出 Ctrl D 在 Windows 中为 Ctrl Z 来结束输入 Second raw input 应该使用 y n 类型
  • 适用于 Android 的 SAML 客户端?

    我正在开发一个项目 需要解析一些受保护网页中的一些数据 为了获得这些页面的访问权限 我必须克服 SAML 身份验证形式 Shibboleth 有人能够在 Android Java 中实现这个标准吗 我已经读过这个线程 Android 的 S
  • 缓冲读取器线程安全吗?

    有什么方法可以获得线程安全的缓冲读取器 当我运行此代码时 我得到了以下信息 Threadid 28 ObjectReference de factfinder resource Resource 1b7aeb4 Threadid 28 Ob
  • 从另一个应用程序控制一个应用程序

    I read 这个问题 and 另一个问题我了解如何从另一个应用程序启动应用程序 让我们称另一个应用程序为启动器应用程序 然而 我的目标不仅仅是启动一个应用程序 而是使用它的功能 所以我想启动器应用程序应该使用意图 显式或隐式 启动活动 我
  • 当父级是 Map 或 Collection 时,Groovy GString 渲染不会调用重写的 toString() 方法

    这是最小的演示案例 class T extends HashMap Override String toString return foo def t new T println t toString println t 输出是 foo S
  • 删除用户控件中的某些属性,即强制使用一个值并且在设计模式下不可编辑

    我怎样才能基本上锁定默认属性以使用户无法编辑它 例如 如果我想锁定 BackColor 属性 如何才能使控件的最终用户无法编辑它 这是在 vb net 2008 中 谢谢您的帮助 从属性网格中删除该属性就足够了 还是您真的想让它保持可见但锁
  • 检索列表大小时发生 ConcurrentModificationException

    对于我的数据结构课程中的一个项目 我的任务是创建一个 3 维范围树 其中每个维度都是 BST 我读这个问题 但这是一个Android问题 而且我们问题的原因似乎不同 唯一的答案是不被接受 代码墙即将推出 对不起 涉及班级 Point3D
  • excel vba 形式 image1.picture 控件中的 LoadImage PNG,黑色背景

    我有将 png 图像加载到图片控件的代码 Option Explicit Option Private Module Private Type GUID Data1 As Long Data2 As Integer Data3 As Int
  • AWS SQS 订阅 AWS SNS 主题

    我有一个用例 我想将单个 SQS 订阅到两个 SNS 主题 因此 发布到任何 SNS 的任何消息都应该在 SQS 中可用 所以我的问题是我们可以在一个sqs上订阅两个SNS主题吗 任何帮助将不胜感激 是的 这是可能的 单个SQS可以订阅多个
  • 警告说“Id”存在并且应该被销毁

    大多数时候 当我多次单击同一按钮时 调用同一函数两次或更多次时 我会看到以下警告 WARN WARN Ext Component constructor Registering a component with a id name whic
  • 三个问题环境评价模型

    I am reading the SICP book Here about the imperative programming model I could not understand the illustration in two po
  • 分享扩展 React Native - 博览会

    我使用创建了一个反应本机应用程序expo 现在 我正在寻找应用程序的共享扩展 以将电子邮件附件中的 CSV 数据导入到我的应用程序中 我努力了npm 包但这对我不起作用 我无法在 Xcode 中使用该 npm 包构建我的项目 我认为reac
  • 有什么办法让 OWIN 托管 SOAP 服务吗?

    如何让 OWIN 托管 SOAP 端点 不关心是否涉及 WCF SOAP 提供 WSDL 这使得某些客户端更容易使用服务 这就是我想要 SOAP 和 REST 的原因 我怀疑答案是 实现您自己的托管 SOAP 端点的中间件 如果这就是答案