将网站项目转换为Web应用程序项目后,我遇到了Windows身份验证问题。我开始使用WinForms和Windows身份验证创建一个新的Web应用程序项目。然后,除了删除不需要的默认内容并复制我自己的内容外,我注意到登录对话框出现在我没想到的地方。
要暂时解决此问题,我只需更改以下内容即停用身份验证:
<authentication mode="Windows"/>
为:
<authentication mode="None"/>
web.config中的。类似:<allow users="?"\>
到<allow users="*"/>
我现在可以访问所有aspx页面,但仍然从aspx页面获取ajax调用的登录对话框。
使用Fiddler我发现ajax调用看起来没问题:
POST http://localhost:60578/...bla_bla.aspx/GetSampleDescription HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:60578/...bla_bla
Accept-Language: nl-NL
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: localhost:60578
Content-Length: 15
DNT: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: ASP.NET_SessionId=vieai......yy1txo
{"Barcode":"4"}
但是,回复是401 Unauthorized。
然后,IE浏览器使用额外的授权标头重复请求,该标头失败等等。
问题是:为什么上面的ajax调用获得401 Unauthorized响应,而aspx页面获得200 OK? web.config中的哪个设置可以解决这个问题?这里有其他因素吗?
答案 0 :(得分:0)
aspx的方法通常不作为端点暴露给外界。您应该将GetSampleDescription
方法移动到asmx或类似的东西。