小编oce*_*rer的帖子

让IIS在Intranet环境中模拟Windows用户到SQL服务器

我正在使用C#和ASP.NET MVC开发一个Intranet站点.我在一台计算机上安装了SQL Server,而在另一台计算机上运行IIS.我希望用户访问Intranet站点,而不提示用户Internet Explorer将用户Windows凭据发送到IIS,然后将这些凭据传递给sql server,这意味着sql server可以看到用户访问数据库.

我知道Kerberos双跳问题,我正试图绕过这个问题.目前我可以让IE将Windows凭据传递给IIS并进行身份验证.我只是无法让IIS将这些凭据传递给SQL Server,而是当前在应用程序池标识下运行请求,该标识设置为域服务帐户"htu\srv-htu-iis".

我的设置如下:

Web.Config中

<system.web>
    <authentication mode="Windows" />
    <authorization>
        <deny users="?" />
    </authorization>
    <identity impersonate="true" />
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

连接字符串

connection string=&quot;data source=hturesbsqlp01;initial catalog=R2_Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"
Run Code Online (Sandbox Code Playgroud)

IIS身份验证设置

Anonymous Authentication = Disabled
ASP.NET Impersonation = Enabled
Forms Authentication = Disabled
Windows Authentication = Enabled
Run Code Online (Sandbox Code Playgroud)

IIS应用程序池设置

Managed Pipeline = Integrated
Identity = htu\srv-htu-iis (domain service account)
Run Code Online (Sandbox Code Playgroud)

Active Directory设置

域服务帐户htu\srv-htu-iis已设置服务主体名称,该名称将我们的站点与帐户相关联.

活动目录有

Allow Delagation to any service
Run Code Online (Sandbox Code Playgroud)

SQL Server在其自己的SQL域服务帐户下运行.

测试

我运行了以下代码测试:

System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

这正确地返回访问该站点的用户的Windows凭据

System.Security.Principal.WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)

返回域服务帐户"htu\srv-htu-iis",这是运行应用程序池标识的内容.

任何人都可以提供我可能出错的方向吗?

sql-server authentication iis asp.net-mvc kerberos

27
推荐指数
1
解决办法
2万
查看次数

实体框架6和SQL Server序列

我正在使用EF6与数据库第一个项目.我们需要使用序列,这是SQL Server 2012中引入的一个特性(我相信).

在表上,标识列具有使用以下设置的默认值:

(NEXT VALUE FOR [ExhibitIdentity])
Run Code Online (Sandbox Code Playgroud)

之所以使用它,因为我们有两个表来存储不同部门的展览信息,但我们需要在两个表中都具有唯一性,因为它在许多其他共享公用表中用作参考.

我的问题是在实体框架中使用它,我用谷歌搜索但找不到与EF6是否支持它们有关的信息.我曾尝试设置StoreGeneratedPattternEFdesigner身份,但在保存时这种抱怨零行了,因为它是用影响scope_identity,看看如果插入成功,但因为我们使用的序列这回来为空.

将其设置为computed会抛出一个错误,说我应该将其设置为identity并将其设置为none会导致它插入0作为id值并失败.

我是否需要调用函数/过程以获取下一个序列,然后在保存记录之前将其分配给id值?

任何帮助深表感谢.

c# sql-server entity-framework-6

13
推荐指数
1
解决办法
1万
查看次数

从asp.net Web应用程序在本地系统上打开文本文件

可以在发布评论后添加说明,事实上我意识到我的原始问题非常令人困惑.这就是我想要实现的......

这将是在本地Intranet上运行而不是在Internet上运行的Web应用程序.最终,我希望从Web应用程序中打开网络文件夹位置.例如,Web应用程序在文件服务器上创建具有集合结构的文件夹,即:

\ server\jobnumber\exhibitreference\image1\server\jobnumber\exhibitreference\image2

我希望用户能够导航到记录并单击链接以打开其匹配的文件夹位置.用户,Web服务器和文件服务器都在同一个域中.

下面的代码只是作为一个例子,尝试让我在本地机器上的文件/文件夹工作,然后我开始尝试远程文件夹.我很欣赏这令人困惑.

原始问题

我创建了.Net/C#Web应用程序,我想在指定位置打开一个文本文件.以下代码在IIS Express上运行时工作正常,但一旦发布到IIS,它就无法正常工作.

目前IIS Express和IIS 7正在我的本地计算机上运行.IIS应用程序池配置为在我的域帐户下运行(必须执行此操作,因为我们对SQL服务器有双跳问题)到目前为止,我有以下代码:

ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.WorkingDirectory = @"C:\Users\pcustance\Desktop\";
processStartInfo.FileName = @"notepad.exe";
processStartInfo.Arguments = "test.txt";
processStartInfo.WindowStyle = ProcessWindowStyle.Maximized;
processStartInfo.CreateNoWindow = true;

Process process = Process.Start(processStartInfo);
Run Code Online (Sandbox Code Playgroud)

通过任务管理器监视系统进程我可以看到成功创建进程"notepad.exe"但没有打开窗口.它说该进程在"pcustance"帐户下运行,但我只能在任务管理器中选择"显示所有用户的进程"时看到它.

窗口是否因为某种方式在错误的帐户下运行而无法启动?

我也尝试过:

Process.Start("C:\Users\pcustance\Desktop\test.txt");
Run Code Online (Sandbox Code Playgroud)

和以前一样,这适用于IIS Express但不适用于IIS7.

任何帮助是极大的赞赏.

目前,我不得不求助于使用支持使用本地链接的Internet Explorer.可以使用以下命令将浏览器指向网络位置:

file:///\\server\folder\location
or 
file://///server/folder/location
Run Code Online (Sandbox Code Playgroud)

c# asp.net iis

6
推荐指数
1
解决办法
2万
查看次数

Automapper:将int转换为字符串

我目前在我的c#MVC项目中使用AutoMapper,并遇到了从整数转换为字符串的问题.

我有两节课:

public class Job
{
    public string Prefix { get; set; }
    public int JobNumber { get; set; }
    public int Year { get; set }
    public int JobPriority { get; set; }

    public virtual EntityPriority EntityPriority { get; set; }
}

public class JobViewModel
{
    public string JobNumberFull { get; set; }
{
Run Code Online (Sandbox Code Playgroud)

使用Automapper我想连接Job类中的所有三个属性以形成一个字符串,然后将其映射到JobViewModel类中的JobNumberFull:

前缀jobnumber可以年

首先,我保持简单,不将字段连接成字符串,我刚刚尝试获取JobNumber(int)并将其映射到JobNumberFull(字符串),如下所示:

Mapper.CreateMap<int, string>().ConvertUsing(Convert.ToString);
Mapper.CreateMap<Job, JobViewModel>()
    .ForMember(d => d.JobPriorityId, opt => opt.MapFrom(s => s.EntityPriority.EntityPriorityID))
    .ForMember(d => d.JobPriorityLevel, opt => opt.MapFrom(s => s.EntityPriority.PriorityLevel))
    .ForMember(d => …
Run Code Online (Sandbox Code Playgroud)

c# string int type-conversion automapper

4
推荐指数
1
解决办法
4349
查看次数