我们在MVC3和实体框架中有一个简单的Intranet站点.从visual studio调试运行一切正常.当我将网站发布到我的本地框IIS7.5网络服务器或同一域上的开发框时,我会收到提示输入用户名和密码,它将无法连接到该网站.它只返回401.1错误,并好奇地显示
Logon Method Not yet determined
Logon User Not yet determined
Run Code Online (Sandbox Code Playgroud)
我已经验证启用了Windows身份验证并禁用了匿名身份验证.该应用程序正在使用applicationPoolIdentity但我已经尝试使用网络服务没有区别.webconfig包括
<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)
并且我在有和没有授权部分的情况下尝试过它.
<authorization>
<allow users="*" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
我在网上找到的唯一另一件事涉及更改注册表项,但这最终将在生产服务器上,所以我不习惯为此进行注册表更改.
使用此代码块在本地运行会返回所有预期信息
<div id="title">
<h4> Environment.UserName: @Environment.UserName
@DateTime.Now.Millisecond.ToString() </h4>
@foreach (var role in Roles.GetRolesForUser())
{
role.ToString(); <br />
}
</div>
<div id="logindisplay">
Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br />
@Environment.UserDomainName
</div>
Run Code Online (Sandbox Code Playgroud)
它是一个MVC3 Web应用程序.IIS身份验证开关是
Anonymous Authentication Disabled
ASP.NET Impersonation Disabled
Forms Authentication Disabled
Windows Authentication Enabled
Run Code Online (Sandbox Code Playgroud)
我缺少的任何其他想法或事物?
我有一个EF代码第一个Web应用程序,工作正常,并正确连接到数据库服务器.我已经为解决方案添加了一个控制台应用程序,以测试与应用程序一起运行的服务的逻辑.
对于为什么控制台应用程序没有保存数据有一个头脑,所以我把它减少到数据库的简单提取,结果原来的控制台应用程序正在保存记录,但是到了不同于指定的数据库在连接字符串中.
这是来自app.config的连接字符串:
<add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" />
<add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
DatabaseContext是
控制台应用程序非常简单
Database.SetInitializer<DatabaseContext>(null);
static void Main(string[] args)
{
using (DatabaseContext db = new DatabaseContext())
{
var query = from u in db.Users where u.Id == 1 select u;
foreach (User u in query)
{
Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName);
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
但是它不是连接到远程服务器上的数据库,而是连接到dev机器上的sqlexpress并点击该数据库.
UniversityGateway.Data.DatabaseContext
Run Code Online (Sandbox Code Playgroud)
我尝试更改连接字符串以指向| DataDirectory | 到SQL连接字符串,并没有任何区别.连接字符串与web.config中的连接字符串相同,正如我所说,Web应用程序正常工作.
关于我缺少的任何想法或指出我正确的方向来解决这个问题?