首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows2008上返回的自托管asp.net webapi基本身份验证编号401

Windows2008上返回的自托管asp.net webapi基本身份验证编号401
EN

Stack Overflow用户
提问于 2013-02-09 03:24:58
回答 1查看 1.7K关注 0票数 0

我已经开发了一个自托管的asp.net webapi服务,它使用消息处理程序(类似于:http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/)进行基本身份验证。当我在我的工作站(win 7 x64)上运行此命令时,客户端按预期使用。当我在目标服务器(Win2008)上运行它时,客户端失败并返回错误代码500。经过一些挖掘和网络跟踪,看起来(正常工作的) win 7 box最初的响应是401,但win 2008 box根本没有响应,它只是丢弃了连接(客户端报告为500)。

我已经在服务器上设置了远程调试,甚至没有堆栈跟踪可供继续。在我看来,可能是我在服务器上丢失了一些组件,这些组件在asp.net webapi代码中的某个地方导致了异常,但我不能确定。

我不太确定下一步该怎么做。我唯一能想到的下一步就是对它运行procmon,看看它是否为dll提供了任何“file-not-found”类型的条目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 07:23:14

我改用每晚构建的asp.net web堆栈,这样我就可以获得更好的符号信息(http://blogs.msdn.com/b/henrikn/archive/2012/04/29/using-nightly-nuget-packages-with-asp-net-web-stack.aspx)。这样,并打开.net框架调试,我就能够捕获实际抛出的异常:

不能直接修改“WWW-Authenticate”标头

通过谷歌搜索,我找到了几条线索,其中一条指向了http://wcf.codeplex.com/discussions/287534,在那里我找到了一个解决方案。基本上,切换到在身份验证模块中使用身份验证,而不是在消息处理中使用身份验证。所以更像这样:

代码语言:javascript
复制
HttpSelfHostConfiguration config = new HttpSelfHostConfiguration("http://0.0.0.0:" + FaxCommon.SERVICE_PORT.ToString());
config.UserNamePasswordValidator = new AuthenticationProvider();

其中AuthenticationProvider是UserNamePasswordValidator的子类

这样做之后,代码就可以在任何地方运行了。

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

https://stackoverflow.com/questions/14779902

复制
相关文章

相似问题

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