小编cod*_*urn的帖子

ASP.NET MVC:以编程方式在静态内容上设置HTTP标头

我有一个带有过滤器的ASP.NET应用程序,RegisterGlobalFilters它执行以下操作:

public class XFrameOptionsAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.AddHeader("X-FRAME-OPTIONS", "SAMEORIGIN");
    }
}
Run Code Online (Sandbox Code Playgroud)

查看Fiddler,我可以看到从Web服务器返回的视图包含此标题.但是,静态文件(例如JavaScript)在HTTP响应中不包含此标头.

如何让ASP.NET MVC也将此过滤器应用于Web服务器返回的任何静态文件?

c# asp.net asp.net-mvc asp.net-mvc-4

14
推荐指数
2
解决办法
9049
查看次数

ClickOnce运行时DFSVC.EXE

有人可以详细说明或指出一些有关DFSVC.EXE在ClickOnce应用程序的执行周期中扮演什么角色的信息吗?如果我通过以下方式启动ClickOnce应用程序:

rundll32.exe dfshim.dll,ShOpenVerbApplication http://www.domain.com/application/?param1=foo
Run Code Online (Sandbox Code Playgroud)

我看到DFSVC.EXE进程已启动.然后我看到我的ClickOnce应用程序的实际EXE进程被调用(由DFSVC.EXE,它被列为ProcessExplorer中的父进程).在这个时间点,我可以通过以下方式杀死DFSVC.EXE:

rundll32.exe dfshim.dll,KillService
Run Code Online (Sandbox Code Playgroud)

并且我的ClickOnce应用程序继续运行.我还注意到,如果我不杀死DFSVC.EXE,它将在大约15分钟后自行消失.

我怀疑DFSVC.EXE负责下载,安装和启动应用程序 - 这是正确的吗?有没有办法告诉DFSVC.EXE在调用ClickOnce应用程序完成这些任务后自动关闭?它是否持久化(即使在关闭ClickOnce应用程序之后)是对下一次调用ClickOnce应用程序的优化?

.net clickonce

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

IIS Express在编译/运行时和Visual Studio集成中指定配置文件

我有一个Visual Studio 2012 MVC Web项目,我使用IIS Express作为开发环境中的Web服务器.默认情况下,IIS Express将其所有配置选项存储在Documents\IISExpress\config\applicationhost.config中.我想将我的应用程序的站点配置隔离到一个独立的IIS Express配置文件中,并将其与所有其他项目资产一起存储在源代码管理中.这很容易做到,但是当我在Visual Studio中开始调试时,我正在努力使Visual Studio告诉IISExpress使用此配置文件.我可以手动启动IISExpress并通过/ config:参数传递配置文件,这很有效,但是当Visual Studio启动IIS Express时,我没有看到任何将命令行参数传递给IIS Express的方法.我在.csproj中寻找一个可以填充与IIS Express命令行参数相关的字段并且一无所获.

我还尝试将Web项目的"开始操作"设置为"启动外部程序",并使用我指定的命令行参数将此程序设置为IIS Express,并将"服务器"部分设置为"使用自定义Web服务器",但是这样总是会出现一条消息,指出"无法在Web服务器上启动调试".看来,当以这种方式配置时,Visual Studio尝试在实际执行"启动外部程序"中指定的命令之前附加到Web服务器主机进程

如果我尝试将IISExpress作为"Post Build Event"运行,它实际上会运行,但这会阻止Visual Studio实际继续执行我的调试代码(我猜它正在等待IIS Express退出 - 这会打败整个目的).

我错过了什么?如何将IIS Express与Visual Studio项目中的自定义配置文件集成?

.net visual-studio visual-studio-debugging iis-express visual-studio-2012

8
推荐指数
1
解决办法
943
查看次数

办公室协议处理程序

Microsoft Office 注册了多个协议处理程序,例如ms-word,等等。此处ms-excel提供了有限的文档。我正在尝试使用 Excel 协议处理程序打开一个文档,向其传递文件 uri,但运气不佳。我可以毫无问题地使用 http/https uri 进行操作,但在我的情况下,文档驻留在网络文件共享上。

如果文档位于 Web 服务器上,则此方法有效:
ms-excel:ofv|u|http://someserver/somefolder/document.xlsx

这不起作用:
ms-excel:ofv|u|file://someserver/somefolder/document.xlsx

我收到以下错误:

无法执行该操作,因为 Office 无法识别为其提供的命令。

有没有办法让这些协议处理程序与文件 URI 一起工作?

windows uri protocols ms-office protocol-handler

8
推荐指数
1
解决办法
3684
查看次数

SSIS 可以使用 Oracle ManagedDataAccess 客户端吗?

我发现该Oracle.ManagedDataAccess.Client 驱动程序库比标准 ODP.NET 250mb+ Oracle 客户端库更容易在 .NET 应用程序中使用和部署。

有什么方法可以将 Oracle 驱动程序的托管版本与 SQL Server Integration Services (SSIS) 一起使用吗?

我使用的是最新版本的 ManagedDataAccess 客户端 (121.1.2) 和 SQL Server 2012。

oracle ssis odp.net

5
推荐指数
1
解决办法
2094
查看次数

VS2017 Team Explorer SSDT 安装失败

我正在尝试将 SSDT v15.6.0 安装到现有的 Visual Studio Team Explorer 2017 实例中。当我运行 SSDT 安装程序时,我可以从此现有 Visual Studio 实例列表中选择 Visual Studio Team Explorer 2017。如果我没有选择任何选项(所需的 SQL Server 数据库选项除外)。安装成功完成。

但是,如果我尝试选择任何/所有其他选项,安装将失败。从查看日志文件来看,VSIX 的安装似乎由于缺少所需的组件而失败。

下面是 SSDT-Setup 安装日志文件的片段,表明 VSIX 安装失败。

[167C:1A6C][2018-05-16T15:40:41]i301: Applying execute package: Microsoft.DataTools.IntegrationServices, action: Install, path: C:\ProgramData\Package Cache\9864EE5369359DB622D0234B6C6B7640B949140C\VSIXBootstrapper.exe, arguments: '"C:\ProgramData\Package Cache\9864EE5369359DB622D0234B6C6B7640B949140C\VSIXBootstrapper.exe" /q /admin /instanceIds:"68f392fc" /logFile:"C:\Users\golaat\AppData\Local\Temp\SsdtSetup\SSDT-Setup-ENU_20180516153141_009_Microsoft.DataTools.IntegrationServices.log" "payload\Microsoft.DataTools.IntegrationServices.vsix"'
[167C:1A6C][2018-05-16T15:41:13]e000: Error 0x80131500: Process returned error: 0x80131500
[167C:1A6C][2018-05-16T15:41:13]e000: Error 0x80131500: Failed to execute EXE package.
[1D80:1858][2018-05-16T15:41:13]e000: Error 0x80131500: Failed to configure per-machine EXE package.
Run Code Online (Sandbox Code Playgroud)

查看安装 VSIX 的日志文件,似乎缺少必需的组件:

 5/16/2018 3:41:05 PM - BEGIN: …
Run Code Online (Sandbox Code Playgroud)

team-explorer sql-server-data-tools visual-studio-2017

5
推荐指数
2
解决办法
3140
查看次数

用于本地驱动程序挂载文件的 docker-composevolumes 语法

volumes我正在尝试在我的 .conf 部分安装一个文件(nginx.conf)docker-compose.yml。我可以毫无问题地将目录挂载为卷,但是,我不清楚文件的语法是什么。

volumes我在我的部分定义了以下内容

volumes:
    roundcubeweb:
      driver: local
      driver_opts:
        type: none
        o: bind
        device: /mnt/docker/volumes/roundcube/html
    nginxconf:
      driver: local
      driver_opts:
        type: none    
        o: bind
        device: /mnt/docker/volumes/roundcube/nginx.conf
Run Code Online (Sandbox Code Playgroud)

后来,我的服务部分下有以下内容

nginx:
  image: nginx:latest
  deploy:
    replicas: 1
  restart: always
  depends_on: 
    - roundcube
  ports:
    - "8082:80"
  volumes:
    - roundcubeweb:/var/www/html
    - nginxconf:/etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)

当我尝试启动它时,我收到以下错误:

错误:对于 roundcube_nginx_1 无法为服务 nginx 创建容器:无法安装本地卷:mount /mnt/docker /volumes/roundcube/nginx.conf:/var/lib/docker/volumes/roundcube_nginxconf/_data,标志:0x1000:不是目录

错误:对于 nginx 无法为服务 nginx 创建容器:无法安装本地卷:mount /mnt/docker/volumes/rou ndcube/nginx.conf:/var/lib/docker/volumes/roundcube_nginxconf/_data,标志:0x1000:不是目录错误:启动项目时遇到错误。

我发现,如果我将文件位置内联到 nginx 服务部分的卷声明中,那么它就可以正常工作。例如:

   volumes:  
    - roundcubeweb:/var/www/html  
    - /mnt/docker/volumes/roundcube/nginx.conf:/etc/nginx/conf.d/default.conf  
Run Code Online (Sandbox Code Playgroud)

不能在该volumes部分挂载文件吗?有本地驱动参数参考吗?

docker docker-compose

5
推荐指数
1
解决办法
8519
查看次数

DateTime.Parse在XP与Windows 7/8上有所不同

在XP和Windows 7上执行以下操作会在.NET4与.NET2控制台应用程序中产生不同的结果:

Console.WriteLine(String.Format("DateTime.Parse on Client: {0}", 
   DateTime.Parse("1998-10-31T00:00:00-04:00")));
Run Code Online (Sandbox Code Playgroud)

.NET4
在XP下返回: 10/31/1998 12:00:00 AM
在Windows 7/Windows 8下返回: 10/30/1998 11:00:00 PM

.NET2
在XP下返回: 10/31/1998 12:00:00 AM
在Windows 7/Windows 8下返回: 10/31/1998 12:00:00 AM

为什么??!?

从字符串中删除TimeZone(-04:00)会导致.NET4下的XP和Windows 7上的值相同.当从字符串执行DateTime.Parse时,Windows XP似乎在.NET4下以不同的方式应用时区偏移量.有没有办法改变这种行为,以便它在.NET4下是一致的,无论操作系统如何(不涉及操纵发送到DateTime.Parse的字符串)

环境: 所有计算机都安装了最新的修补程序(可通过Windows Update获得),并配置为"东部时间",并在"时区设置"中选中"自动调整夏令时的时钟".

我已在使用.NET4的Windows 7计算机和使用.NET4.5的Windows 7计算机上确认了此行为

.net windows datetime parsing date

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

在运行时创建lambda表达式

我有一个存储库类,其GetAsQueryable方法定义如下:

public class Repository<TEntity> : IDisposable, IRepository<TEntity> where TEntity : class
{
    internal DbSet<TEntity> _DbSet;

    public virtual IQueryable<TEntity> GetAsQueryable(
         Expression<Func<TEntity, bool>> filter = null,
         Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
         string includeProperties = "")
    {
        IQueryable<TEntity> query = _DbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            return orderBy(query);
        }
        else
        {
            return query;
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

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

不显示jQuery Unobtrusive Validation的验证摘要

我正在使用以下内容:

  • MVC4
  • jQuery 1.11.2
  • jQuery验证1.13.1
  • jQuert.Validate.Unobtrusive(通过nuget显示为3.2.3)
  • 淘汰赛3.3

我的Knockout View Model模板如下所示:

<tbody data-bind="foreach:recipientEmailAddressList">
    <tr>
        <td class="no-padding" style="width:330px">
            <input class="suppress-ms-clear input-parameter full-width" data-bind="value:EmailAddress, hasfocus:EmailAddress.focused" name="EmailAddresses" data-val="true" data-val-email="Please enter a valid email address.">
        </td>
        <td class="no-padding align-right">
            <div class="delete" data-bind="visible: $root.recipientEmailAddressList().length > 1">
                <a href="" data-bind="click:$root.removeRecipientEmailAddress"><span class="no-wrap">X</span></a>
            </div>
        </td>
    </tr>
</tbody>
Run Code Online (Sandbox Code Playgroud)

我在MVC视图中也有以下内容:

@Html.ValidationSummary(false)
Run Code Online (Sandbox Code Playgroud)

当我添加未通过验证的电子邮件时,无效元素样式正确应用于input元素,但验证摘要不会显示验证错误.同样,即使明显存在验证错误,也允许用户提交页面.

我没有任何绑定到表单的submit元素的代码.

似乎不引人注意的验证通过应用错误样式知道存在问题,但为什么它没有显示验证摘要?为什么我可以提交表格?如果我更正了电子邮件地址以使其有效,则输入上的错误样式将消失.

javascript jquery unobtrusive-validation asp.net-mvc-4 knockout.js

3
推荐指数
1
解决办法
3107
查看次数

使用GitHub风味降价在表中换行

我正在与Jekyll和GitHub风味降价合作.最终结果是在GitHub页面上托管内容.我有一个表,我希望在其中一行的第2列中有一个换行符.这样做的正确方法是什么?我当然可以插入一个<br/>和GitHub似乎很荣幸 - 但这是正确的方法吗?在表格内容中插入物理换行符似乎会破坏表格的渲染.

First Header  | Second Header
------------- | -------------
Content Cell  | Content Cell Line 1
              | Content Cell Line 2
Content Cell  | Content Cell
Run Code Online (Sandbox Code Playgroud)

markdown jekyll github-flavored-markdown

3
推荐指数
1
解决办法
5960
查看次数

了解CMD.EXE FOR(set)说明符的行为

我在Windows 7环境中执行的CMD.EXE批处理文件中有以下命令:

FOR %%f IN ("C:\TEMP\FILE.TXT" "C:\TEMP\FILE2.TXT") DO (
   ECHO %%f
)
Run Code Online (Sandbox Code Playgroud)
  • C:\ TEMP\FILE.TXT 存在
  • C:\ TEMP\FILE2.TXT 确实存在

这会产生以下输出:

"C:\TEMP\FILE.TXT"
"C:\TEMP\FILE2.TXT"
Run Code Online (Sandbox Code Playgroud)

但是,我发现如果我更改FOR命令以包含存在的外卡如?或*在文件名中,我得到了我期望的结果,这只是C:\ TEMP\FILE2.TXT的回声

IE:

FOR %%f IN ("C:\TEMP\FILE.TXT?" "C:\TEMP\FILE2.TXT?") DO (
 ECHO %%f
)
Run Code Online (Sandbox Code Playgroud)

生产: C:\TEMP\file2.txt

FOR命令的文档说明:

FOR %variable IN (set) DO command [command-parameters]

%variable  Specifies a single letter replaceable parameter.
(set)      Specifies a set of one or more files.  Wildcards may be used.
command    Specifies the command to carry out for each file. …
Run Code Online (Sandbox Code Playgroud)

windows for-loop cmd batch-file

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

重命名 Azure DevOps 托管代理

我们最近将 Azure DevOps 组织从免费托管代理产品切换为两个付费托管代理。添加第二个托管代理后,它会自动命名为“Azure Pipelines 2”,这是一个足够好的名称。问题是原始代理似乎被命名为“托管代理”,我一生都找不到重命名它的方法。如果可以将其重命名为“Azure Pipelines 1”,那就太好了。是否可以重命名托管代理?如果是这样,如何执行此操作,因为我在“组织设置”中的“代理池”选项中查看过,但没有看到任何方法可以执行此操作。

azure-devops azure-pipelines

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