如何解决无法使用Entity Framework BUT连接到C#asp mvc应用程序中的Sql数据库,而相同的代码适用于Winform应用程序
首先,如果听起来太怪异,请原谅。我认为自己是MVC应用程序的新手。 我遇到了一个奇怪的问题,至少到目前为止,似乎还没有解决的办法。.我到处都看了看,也毫不犹豫地使它生效。最后,我转向了这个论坛。 这是我的第一篇文章,因此任何错误都请忽略并指导我。
问题是多方面的...
高级详细信息... 我已经创建了一个等待上传到远程服务器(客户端计算机)上的C#ASP MVC Web应用程序 该应用程序使用实体框架-代码优先方法 使用Windows身份验证系统连接到数据库
场景1:应用程序的工作位置 我已经在我的机器上测试了该应用程序,并且运行正常。 我的系统上安装了Express Edition的Sql Server Management Studio。
场景2:应用程序失败的地方。问题-大图
它在我的系统上很好用,但是在远程服务器上测试时会崩溃
该应用程序无法连接到远程服务器Sql数据库。尝试连接数据库时,它崩溃并显示错误消息“用户'
我已经检查了连接字符串中的所有内容,例如- 数据源名称正确 初始目录也指向正确的数据库名称 集成安全性=真 没有提及用户名或密码
连接字符串在我的系统上效果很好。但是它确实可以在客户端计算机上运行,并显示上面的错误。
连接字符串为: connectionString =“ Data Source = RemoteComputerName; Initial Catalog = DatabaseName; Integrated Security = True; MultipleActiveResultSets = true”
我无法确切找出导致错误的原因-是我的代码还是Sql Server数据库设置-权限。 由于该连接在我的本地计算机上正常工作,这意味着代码正确
为了检查sql服务器权限是否正常工作。我在WINFORM中创建了部分“测试连接应用程序”并上传到服务器上,这一次代码有效并读取了所有表数据。
但是当我尝试连接MVC项目时,它显示错误...“用户登录失败...”。
我很困惑WINFORM中的哪些功能在MVC中失败。
数据库权限必须正确,因为当尝试使用WINFORM访问它时,它就起作用了。
请让我知道是否错过了这篇文章的详细信息。
我们非常感谢您的帮助!
谢谢。
解决方法
请显示您的连接字符串。 (您可以屏蔽所有真实密码,实际服务器名称,实际数据库名称)。
由于您提到“集成安全性= true” ........,那么您必须知道哪个身份正在运行该过程(网站或winforms.exe)
作为winforms应用程序运行时,您以“您”身份运行(很可能)。像这样,登录的用户进入Windows o / s。
在IIS下运行时,您正在与所使用的应用程序池关联的标识下运行。.很可能不是您,而是服务帐户。
您的服务帐户无权访问sql-server。
您可以通过捕获一个异常,然后显示类似以下内容来显示此信息:
您可以将ArithmeticException替换为任何内容,我只是向捕获的异常显示“添加信息”并重新抛出。
try
{
// some sql server access code
}
catch(Exception ex)
{
throw new ArithmeticException("What is the real IIdentity: " + this.FindIIdentity(),ex);
}
private string FindIIdentity()
{
try
{
//'Dim user As WindowsPrincipal = CType(System.Threading.Thread.CurrentPrincipal,WindowsPrincipal)
//'Dim ident As IIdentity = user.Identity
string returnValue = string.Empty;
WindowsIdentity ident = WindowsIdentity.GetCurrent();
returnValue = ident.Name;
try
{
returnValue += " on " + System.Environment.MachineName;
} catch (Exception ex)
{}
return returnValue;
} catch (Exception ex)
{
return "Error Finding Identity";
}
}
IIS屏幕截图
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。