问题标签 [owin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mono - SignalR 和 Mono 和 Owin 的自托管跨站点连接问题
我即将准备好解决这个问题,因为所有指南都显示相同的一两个解决方案,这似乎对除我自己以外的所有人都有效。
我在 Mono 应用程序中使用 SignalR,使用 Owin。我在 HubConfiguration 中设置了 EnableCrossDomain = true。我已经设置了一个使用 javascript 进行连接的简单测试页面。和url 加载没有问题negotiate
,ping
似乎回复正确。connect
但是,我在通话中遇到跨域错误。
它肯定在使用我的 EnableCrossDomain 设置,因为如果我将其设置为 false,negotiate
则不起作用。
这是我要连接的 Javascript(是的,我包括 /signalr/hubs 脚本,它返回适当的 javascript):
我也试过jQuery.support.cors = true;
了,但没有任何区别。
我也尝试像这样连接到常规的 PersistantConnection,但遇到了同样的问题,所以它似乎与集线器没有直接关系:
我在这里做错了什么?为什么做ping
和negotiate
工作却不做connect
?
编辑:为了让事情变得更奇怪,我添加了一些日志记录并验证 SignalRCallHandler
类正在Access-Control-Allow-Origin
为所有请求添加标头,包括connect
请求。所以它应该工作。
编辑 2:所以实际上由于 curl 它看起来服务器正在返回一个 500 响应代码,并且由于它不包括标题(这必须在我添加日志记录的代码块之后发生),Chrome 抱怨跨站点,当真的有可能在服务器的某个地方抛出异常时。希望我能尽快解决这个问题,并在此处发布答案。
c# - 自托管 OWIN 和 urlacl
我创建了一个在 OWIN 中自托管的自托管 Nancy/SignalR 应用Microsoft.Owin.Host.HttpListener
程序Microsoft.Owin.Hosting
事情在本地运行得很好,但是一旦我尝试使用除 localhost 之外的任何东西来访问应用程序,我就会收到HTTP Error 503. The service is unavailable
错误消息。我什至无法使用127.0.0.1
或机器名称访问应用程序。
我尝试使用将端口添加到 urlacl
http add urlacl http://*:8989/ user=EVERYONE
但似乎什么也没做。
这是我尝试过的 OWIN 启动选项,
这是启动和停止服务器的文件的源代码。
model-view-controller - 你能在 OWIN 之上构建一个 ASP.NET Web API 吗?
那么标题基本上总结了它,我想知道我是否可以为我的 ASP.NET Web API 创建一个 OWIN 管道。我想这样做,这样我就可以应用一个基础安全层,我可以将它应用到我的服务服务器上托管的所有 API 服务。OWIN 的新手,喜欢这个想法
c# - 获取“请求的性能计数器不是自定义计数器,它必须初始化为只读。” 在尝试使用 Owin 自托管 SignalR 时
我正在尝试开发一个通过使用 OWIN 自托管 SignalR 的 Windows 窗体应用程序。
我在那里找到了几个示例,它们通常都指向类似于下面的代码的内容。
但是,当我运行该示例时,我始终收到错误消息“请求的性能计数器不是自定义计数器,它必须初始化为只读”。在以下行:
我发现了一些关于一般错误的文章,这与(显然)自定义性能计数器的问题有关。尽管如此,我发现的所有可能的解决方案似乎都没有任何帮助,主要是因为,这应该是自定义计数器的问题,而不是缺少常规的 .Net 框架计数器。
有没有人发现类似的问题或可以阐明这个问题?
先感谢您。
c# - IE 将 url 视为下载而不是 HTML 页面
我正在使用自托管的 ServiceStack 开发本地服务器。我硬编码了一个演示网页,并允许在以下位置访问它localhost:8080/page
:
它适用于 Chrome/Firefox/Opera,但是,IE 会将 url 视为下载请求并宣传“您要从 localhost 打开或保存页面吗?”
我该怎么做才能让IE将url视为网页?(我已经在演示页面中添加了 doctype 标头;但这不能阻止 IE 将其视为下载请求。)
编辑。
好的。访问本地主机时,我使用 Fiddler 检查响应。IE 和 Firefox 得到的响应是完全一样的。在标题中,内容类型写为:
Firefox 将此内容类型视为text/html
,但 IE 无法识别此内容类型(它只能识别单个text/html
)!
所以这让我相信这是由于 SS 中的一个错误。
解决方案
一种解决方案是显式设置内容类型:
forms-authentication - 在 OWIN 托管的 SignalR 实现中接受 ASP.NET 表单身份验证 cookie?
我有一个使用 OWIN 的自托管 SignalR 实例。我想实施授权。我的用户已经使用表单身份验证登录到 ASP.NET MVC 应用程序。
由于这两个应用程序将在同一个 URL 上可用,因此 cookie 将在两者之间共享。如何在自托管 SignalR 应用程序中接受表单身份验证 cookie?
澄清:我说的是浏览器访问自托管 SignalR 集线器,使用相同的凭据登录到单独的(但相关的,并安装在同一主机上)IIS 应用程序。
所以,问题是:我如何连接到 SignalR 服务器管道以捕获.ASPXAUTH
cookie 并在调用集线器之前使用它来设置当前主体?
如果有帮助,我可以加入一些南希。
signalr - 使用 SignalR 和 OWIN 自托管的 Windows 身份验证
我有一个SignalR
使用OWIN
. 我想将 Windows 身份验证添加到传入的请求中。这可能吗?
我相信我可以通过这样的方式添加例如表单身份验证。
但是我找不到任何方法来使用 Windows 身份验证来做类似的事情。
我的后备计划是改为托管在 IIS 中,但如果可以的话,我更希望能够将我的应用程序保留为 Windows 服务。
c# - 设置 OWIN 响应状态码
这应该很简单,所以我必须缺少一些基本的东西。在我的 OWIN 应用程序中,我想要一个重定向到主页 (index.html) 的包罗万象。
我看不到任何方法
返回响应代码的方法。
signalr - 具有自托管和身份验证的 SignalR 跨域连接
我在使用 OWIN 自托管 SignalR 时遇到了 CORS 问题,这仅在我尝试启用身份验证时发生。
我在网络浏览器中遇到的错误是:
XMLHttpRequest 无法加载http://.../signalr/negotiate?[snip] Origin ... Access-Control-Allow-Origin 不允许
仅当我使用此答案中的方法在自托管服务器中启用身份验证时才会发生这种情况:
如果我注释掉该AuthenticationSchemes
行,那么 CORS 就可以工作(并且我已经检查了这些说明中的所有内容)。如果我使用 NTLM 以外的其他身份验证方案,我会遇到同样的问题。
使用 Fiddler 检查发生了什么,没有启用身份验证,我看到了从服务器返回的必要 CORS 标头:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:[我的服务器]
但是,一旦我启用身份验证,我会得到一个缺少这些标头的 401 响应。所有请求都有必要的Origin
标头。
在检查了 SignalR源代码后,它看起来像正在设置标头,但大概启用了身份验证,HttpListener
发送初始 401 响应而没有点击此代码。
所以我认为我的问题是:如何在其身份验证协议的协商中HttpListener
包含标头?Access-Control-Allow-Origin
c# - Owin 还可以处理其管道中的响应吗
据我了解 Owin 现在它是一个模块管道,您可以定义它来处理传入的请求。任何模块都可以返回响应或将请求传递给下一个模块。这样就可以很容易地添加日志记录或身份验证或诸如此类的东西,非常酷。
但是,如果我想记录响应怎么办?您能否创建一个针对每个响应运行的模块,而不管响应来自管道中的何处?如果可能的话,您能否提供一个示例或链接,我似乎无法在网上找到这种情况。