所以我有一个奇怪的问题。我在 MVC4 中使用 C#。我关闭了匿名身份验证并打开了域身份验证。此问题发生在我的本地系统(使用本地 IIS 进行调试)和远程服务器上。在正常情况下,身份验证在两个系统上自动且正确地工作。
我有两个 C# MVC4 应用程序 (.NET 4.5),它们在 try-catch 块中使用 StringBuilder 对象。我在这两个应用程序中都注意到,一个带有 try 块,另一个在 catch 中,如果引用了 StringBuilder,系统会提示输入域凭据并且不会除了我的凭据,最终放弃并失败并出现以下错误:
0: error
12030 -- connection error or connection reset
12031 -- connection error or connection reset
搜索引擎显示有关错误的更多信息:
ERROR_WINHTTP_CONNECTION_ERROR 12030与服务器的连接已被重置或终止,或者遇到了不兼容的 SSL 协议。例如,WinHTTP 5.1 版不支持 SSL2,除非客户端专门启用它。
错误代码 12031 与服务器的 FTP 连接已重置.. 无法建立连接。
这些都没有真正确定我的问题,并且似乎与许可问题比真正的问题更相关。这些错误也覆盖了我的描述性错误,所以我失去了我真正想在客户端看到的真正错误。
我已经在我的常规域帐户以及更高级别的域管理员帐户下尝试过此操作。两者都不起作用。我应该提到我在这个例子中使用了 Telerik 的新 beta 调度程序控件,但它发生在另一个 Telerik 项目下。然而,这个问题与使用 Telerik 做任何事情无关。
使用域身份验证,此示例仍会提示进行身份验证:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
}
public ActionResult someAjax()
{
try
{
throwAnError();
}
catch (Exception e)
{
string msg = returnErrorMsg(e);
return new HttpStatusCodeResult(
System.Net.HttpStatusCode.InternalServerError, msg);
}
return Json("I sent a valid value");
}
string throwAnError()
{
throw new Exception("Something bad happened");
}
string returnErrorMsg(Exception exc)
{
//return exc.Message; // this doesn't prompt for credentials.
StringBuilder sbError = new StringBuilder();
sbError.AppendLine(exc.Message);
return sbError.ToString();
}
}
在 Index.cshtml 文件中(我在别处包含了 jquery 和 Index.js):
<button id="clickBtn">My Button</button>
<div id="value"></div>
索引.js:
$("#clickBtn").click(function () {
$.ajax({
url: '/Home/someAjax',
success: function (data) {
$("#value").text(data);
},
contentType: 'application/json'
})
.error(function (textStatus, errorThrown) {
$("#value").text(textStatus);
});
});