我在发布信息时发现内部服务器错误,以便在Web API 2中注册个人帐户。它发生在client.PostAsync
上。 api / account / register与创建Web API 2项目时使用个人帐户时创建的内容不同。
var handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
handler.PreAuthenticate = true;
handler.ClientCertificateOptions = ClientCertificateOption.Automatic;
handler.Credentials = new NetworkCredential("<user>", "<pass>");
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("http://localhost/<dev_site>/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var rbm = new RegisterBindingModel();
rbm.UserName = "<user>";
rbm.Password = "memememe";
rbm.ConfirmPassword = "memememe";
MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();.
HttpContent content = new ObjectContent<RegisterBindingModel>(rbm, jsonFormatter);
var resp = client.PostAsync("api/account/register", content).Result;
resp value = {StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Pragma: no-cache
Cache-Control: no-cache
Date: Fri, 14 Mar 2014 14:32:49 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 6065
Content-Type: application/json; charset=utf-8
Expires: -1
}}
我应该提到的另一件事是,这是来自另一个挂在Web API应用程序中的.NET MVC应用程序。我尝试使用完全相同的代码,在visual studio中调试期间使用localhost和端口号,并且它在Web API项目的homecontroller中完全正常工作。因此,当从本身以外的localhost和visual studio调试器调用时,它会抛出一个内部服务器错误,但是当它在其中时,它正在按预期工作。
答案 0 :(得分:2)
运行Azure myTodo示例代码时遇到了同样的错误。一般错误非常令人沮丧。事实证明,服务器上的register方法发生了错误:
IdentityResult result = await this.UserManager.CreateAsync(user, model.Password);
如果你在它周围添加一个try / catch块并通过它进行调试,它会告诉你更多细节。就我而言,我收到了如下错误消息:
从中获取提供者信息时发生错误 数据库。这可能是由实体框架使用不正确引起的 连接字符串。检查内部异常以获取详细信息并确保 连接字符串是正确的。
在我的情况下,这确实是一个连接字符串问题。
答案 1 :(得分:0)
事实证明,在我的情况下,API控制器中的一个方法具有公共访问修饰符。我改为私人和Bang!头痛不见了。