首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows、SignalR身份验证中授权属性的意外行为

Windows、SignalR身份验证中授权属性的意外行为
EN

Stack Overflow用户
提问于 2014-09-11 14:18:32
回答 1查看 1.1K关注 0票数 0

我对SignalR有一个非常奇怪的问题,我不知道该如何处理它。

我用SignalR (http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20)在VB.NET中创建了一个简单的VB.NET应用程序,唯一改变的是我向集线器类添加了<Authorize()>属性,并使发送消息方法从上下文中获取用户名。

我们有开发服务器(Windows 2008 R2,IIS7,.NET 4.5.1)。在开发服务器中,在IIS和应用程序设置中,我启用了Windows身份验证和ASP.NET模拟。该应用程序的工作方式与预期的一样。

现在,当我将这个简单的应用程序部署到我们的生产服务器上时,应用程序根本无法工作。OS和.NET版本是相同的,我要求管理员以与开发完全相同的方式配置IIS和应用程序设置。当我在Chrome中打开index.html时,我在JS控制台中看到了ERR_INVALID_AUTH_CREDENTIALS,FF Firebug给出了401个未经授权的错误。当然,集线器方法不起作用。

如果我从集线器中删除<Authorize()>属性并重新编译应用程序,它在dev和prod中都能工作,但在本例中,用户名在上下文中是空的。因此,问题肯定在授权或身份验证的某个地方。

我们在生产服务器中也有一些使用Windows身份验证的应用程序,但我们从来没有遇到过任何问题。

服务器/IIS的哪些设置可能导致这样的问题?

EN

回答 1

Stack Overflow用户

发布于 2015-02-21 09:26:32

我不知道我们是否有完全相同的问题,但我认为其他人可能会发现你的问题,在寻找解决方案的问题,我有。

我的问题是,授权属性在我的MVC控制器中工作得很好,但是相同名称、不同名称空间的属性在我的集线器中不起作用。我一直看到Context.User为null,客户端正在接收401条未经授权的消息,试图连接到我的集线器。

我找了几个小时,一个多星期,试图找出是什么导致了我的问题,我终于找到了它。

代码语言:javascript
复制
[assembly: OwinStartup(typeof(Startup))]

namespace Your.Namespace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {  
            ConfigureAuth(app);
            ConfigureSignalR(app);
        }
    }
}

我现在很清楚,您应该在ConfigureAuth 之前使用 ConfigureSignalR,但是在入门指南中,它不够明确。我把他们搞错了。

希望这能帮到别人!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25789873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档