2

我在解决方案中有 2 个项目,一个控制台应用程序和 MVC 项目。控制台应用程序将向http://localhost:68220/MyMvcArea/MyMvcController/MyMvcMethod. 用 MVC 控制器中的属性MyMvcMethod装饰。[Authorized]

使用 Windows 身份验证模式的开发服务器在 Visual Studio 2010 和 2012 中调试正常。现在我正在使用相同的解决方案尝试 Visual Studio 2013,我收到401 - Unauthorized response

我在全局 applicationhost.config 文件和项目属性中为我的 MVC 项目启用了 Windows 身份验证,我可以在浏览器中访问该方法,但控制台应用程序仍会收到 401 响应。控制台应用程序也在我的 Windows 帐户下运行,因为我可以在任务管理器中对其进行验证。

有谁知道如何解决这个问题?我只需要它来调试 Visual Studio 中的 IIS Express。

编辑:

我检查了 IIS Express 日志,子状态代码是 2。所以根据 MSDN,401.2 是指“由于服务器配置而登录失败”。

4

2 回答 2

4

我遇到过同样的问题。简短的解决方法是允许在 IIS Express 中进行 Windows 身份验证:“\Documents\IISExpress\config\applicationhost.config”

改变

<windowsAuthentication enabled="false">

<windowsAuthentication enabled="true">

如此处详述: 在 VS2013 中调试时的身份验证问题 - iis express

于 2013-11-28T14:44:30.530 回答
1

我找到了解决这个问题的方法。在 Windows 服务中创建 Web 请求时,我需要显式设置凭据:

request.Credentials = CredentialCache.DefaultNetworkCredentials;

但是,我们在 VS2012 中从来不需要这样做,这对我来说有点像现在新版本的 IIS Express 中的错误。

编辑:在将每个请求发送到服务器之前需要上述行,例如:

var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultNetworkCredentials;
request.BeginGetResponse(AsyncResponseCallback, state);
于 2013-12-09T00:58:41.903 回答