小编awj*_*awj的帖子

如何避免System.Xml.Linq.XElement转义HTML内容?

我正在使用XElement对象在ASP.NET页面的代码隐藏中构建一些HTML.

我可能会或者可能不会像我一样向这个XElement添加一些XAttributes,方式如下:

var elmnt = new XElement("div",
     new XAttribute("id", "myDiv"),
     );
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在myDiv中添加一些包含HTML的内容,那么XElement会自动转义,在我的情况下,这是不可取的.

所以,如果我有:

var elmnt = new XElement("div",
     new XAttribute("id", "myDiv"),
     "<span id='content'>hello world</span>"
     );
Run Code Online (Sandbox Code Playgroud)

然后使用以下代码将其渲染为Placeholder对象:

myPlaceholder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = elmnt.CreateNavigator().OuterXml });
Run Code Online (Sandbox Code Playgroud)

当页面加载时,源显示elmnt中的内部内容已被转义,并在页面的源中具有以下格式:

&lt;span id='content'&gt;hello world&lt;/span&gt;
Run Code Online (Sandbox Code Playgroud)

鉴于我在这里编译的XML是有效的HTML,并且内部内容也是有效的HTML,我如何告诉XElement父对象不要逃避内部内容?如何将其保留为原生格式?

html asp.net xelement escaping

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

Visual Studio:将jsmin作为构建后事件运行

我正在尝试将jsmin.exe作为后期构建事件添加到我的VS 2010项目中,但是当我尝试构建项目时,我得到"错误代码9009".

我已在命令提示符下测试,发现如果我导航到该文件夹​​,则运行

jsmin < debug.js > min.js
Run Code Online (Sandbox Code Playgroud)

然后它工作正常.

但是,如果我从C:\运行命令并输入完整路径,则返回

'C:\ Users\Andrew\Documents\Visual'未被识别为内部或外部命令,可操作程序或批处理文件.

所以我的结论是jsmin似乎不喜欢文件路径中的空格.鉴于Visual Studio的惯例是将项目存储在\ Visual Studio 2010 \的子文件夹中,有人可以建议我如何解决这个问题吗?

javascript visual-studio-2010 filepath post-build-event

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

ASP.NET 优化不会将 LESS 转换为 CSS

我很难使用 .NET 的新优化框架(用于缩小和捆绑)将 LESS 文件转换为 CSS。

我有一个只包含 LESS 文件的目录。

我使用以下代码将它们捆绑在一起并将它们转换为 CSS:

var lessBundle = new Bundle("~/st-style-common-2")
    .IncludeDirectory("~/Admin/Resources/styles/", "*.less");
lessBundle.Transforms.Add(new LessTransform());
lessBundle.Transforms.Add(new CssMinify());
bundles.Add(lessBundle);
Run Code Online (Sandbox Code Playgroud)

我还使用了此处详述的 LessTransform 类。

当 debug="false" 文件被转换成标准 CSS 并编译成一个,正如预期的那样。

但是,当 debug="true" 文件没有被转换时,在 HTML 中留下一堆 .less URL,浏览器不理解这些 URL,IIS 似乎没有处理程序。

我意识到我可以构建一些处理程序来为这些 .less 文件提供服务,但我认为我不需要这样做。即使在调试时,优化框架也不会将 LESS 转换为 CSS 吗?

.net less bundling-and-minification asp.net-optimization

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

正确实现瞬态故障处理(Azure)

在过去的一天左右,我一直在尝试在Azure SQL数据库上实现瞬态故障处理.虽然我与DB有一个有效的连接,但我不相信它正在按预期处理瞬态故障.

到目前为止我的方法涉及到了

public static void SetRetryStratPol()
{
    const string defaultRetryStrategyName = "default";

    var strategy = new Incremental(defaultRetryStrategyName, 3, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
    var strategies = new List<RetryStrategy> { strategy };
    var manager = new RetryManager(strategies, defaultRetryStrategyName);
    RetryManager.SetDefault(manager);
    retryPolicy = new RetryPolicy<SqlDatabaseTransientErrorDetectionStrategy>(strategy);
    retryPolicy.Retrying += (obj, eventArgs) =>
                            {
                                var msg = String.Format("Retrying, CurrentRetryCount = {0} , Delay = {1}, Exception = {2}", eventArgs.CurrentRetryCount, eventArgs.Delay, eventArgs.LastException.Message);
                                System.Diagnostics.Debug.WriteLine(msg);
                            };
}
Run Code Online (Sandbox Code Playgroud)

我从Global.asax's中调用那个方法Application_Start().[ retryPolicy是静态类的全局静态变量,也包括下一个方法.]

然后我有一个方法

public static ReliableSqlConnection GetReliableConnection()
{
    var …
Run Code Online (Sandbox Code Playgroud)

c# dbconnection azure azure-sql-database

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

将异步上传到Azure Blob Storage永远不会返回

我正在尝试使用异步方法将文件上载到Azure blob存储,然后设置其元数据,但该UploadFromByteArrayAsync方法永远不会返回.

我有以下代码:

var connAzureBlob = ConfigurationManager.AppSettings["AzureBlobStorage"];    
var storageAccount = CloudStorageAccount.Parse(connAzureBlob);
var blobClient = storageAccount.CreateCloudBlobClient();

var fileContainer = blobClient.GetContainerReference(ConfigurationManager.AppSettings["AzureBlobContainer"]);
if (!fileContainer.Exists())
{
    await fileContainer.CreateAsync();
    await fileContainer.SetPermissionsAsync(new BlobContainerPermissions {
                                                                             PublicAccess = BlobContainerPublicAccessType.Blob
                                                                         });
}

try
{
    var fileBlob = fileContainer.GetBlockBlobReference(documentId.ToString());
    await fileBlob.UploadFromByteArrayAsync(buffer, 0, buffer.Length);
    Log.Info($"{nameof(SaveToBlobAsync)}: blob {documentId} uploaded.");

    await fileBlob.FetchAttributesAsync();
    fileBlob.Properties.ContentType = contentType;
    fileBlob.Metadata["..."] = "...";
    await fileBlob.SetMetadataAsync();
    Log.Info($"{nameof(SaveToBlobAsync)}: {documentId} - metadata saved.");
}
catch (Exception exception)
{
    Log.Error($"{nameof(SaveToBlobAsync)}: An exception was thrown while saving a file to a …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage-blobs async-await

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

Ninject和WebAPI:从NuGet安装后开始使用

我通过Package Manager控制台安装了NuGet包Ninject Integration for WebApi2.

根据项目的GitHub页面上wiki,这应该创建一个NinjectWebCommon在App_Start文件夹中调用的类.但事实并非如此.

同样的GitHub wiki页面解释了你应该看到的内容,以便你自己添加它.所以我尝试NinjectWebCommon自己创建课程.这里的问题是我找不到OnePerRequestModule以下代码段中的命名空间.

public static void Start()
{
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
    bootstrapper.Initialize(CreateKernel);
}
Run Code Online (Sandbox Code Playgroud)

替代方案,并根据GitHub维基页面两者之间没有有效区别,就是修改global.asax.所以我尝试了这种方法并添加了一些像这样的绑定

private void RegisterServices(IKernel kernel)
{
    kernel.Bind<IEntityAccess>().To<EntityAccess>();
    kernel.Bind<IDictionaryRepository>().To<DictionaryRepository>();
}
Run Code Online (Sandbox Code Playgroud)

并发现我的项目构建,但是当一个请求被发送到WebAPI项目时,它找不到(,我收到404响应).

所以显然还有其他一些必要的布线,而不是我的项目.

看来,尽管改变了我的global.asax来源NinjectHttpApplication,但global.asax不再被称为.

谁能告诉我我可能会失踪的是什么?我已经卸载并重新安装了几次NuGet包,但NinjectWebCommon该类从未出现过,我的global.asax文件也没有被修改过.

我还阅读了Ninject自己的文档,但令人沮丧的是这是一个相当大的教程,涵盖了IoC的基础知识以及Ninject如何运行而不是告诉你如何开始使用Ninject.

还有这篇SO帖子询问如何开始使用Ninject for WebAPI,所以看起来他们的NuGet包有些不对劲.

c# dependency-injection ninject nuget asp.net-web-api

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

使用PowerShell将文件访问权限分配给IIS_IUSRS

我正在尝试IIS_IUSRS使用PowerShell 将用户组的访问权限添加到文件夹。

目前我有

$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("BUILTIN\IIS_IUSRS", "FullControl", "Allow")
$acl = Get-ACL "C:\tmp"
$acl.AddAccessRule($accessRule)
Set-ACL -Path "C:\tmp" -ACLObject $acl
Run Code Online (Sandbox Code Playgroud)

运行时,这会将IIS_IUSRS添加到用户列表中,但是没有分配特权。

在此处输入图片说明

我错过了什么?

powershell file-access

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

Chrome 浏览器上的自动文件下载限制为 10 个文件

我有一个网页,我们根据用户选择的页面项目生成 PDF。这会导致创建 PDF 服务器端的回发(它是一个 ASP.NET WebForms 页面)。一<a class="documentDownload">则标记添加到每个项目的页面。

当页面在浏览器中重新加载时,将执行以下 jQuery 脚本以自动下载文件(如果用户选择了自动下载选项):

var divHost = document.createElement("div");
divHost.id = "elmntDnldLinks";
divHost.style.display = "none";
document.body.appendChild(divHost);

setTimeout(function() {
    $(".documentDownload").each(function(idx, val) {

        var lnkDownload = $(val),
            save = document.createElement("a");

        save.href = lnkDownload.attr("href");
        save.download = lnkDownload.attr("download");
        save.target = "_blank";
        divHost.appendChild(save);
        save.click();
    });
}, 1000);
Run Code Online (Sandbox Code Playgroud)

此脚本有 1 秒的延迟,然后对于每个 .documentDownload 元素,它会创建一个<a>href原始元素具有相同属性的新元素,将其附加到新添加的隐藏元素,然后以编程方式单击它。

[这种创建新链接并单击这些链接而不是单击原始 DOM 元素的策略绕过了浏览器安全措施。]

这在 Firefox 中运行良好,但 Chrome 从不下载超过 10 个文件。为什么?例如,我可以在页面和隐藏元素中看到 15 个链接,但只下载了 10 个文件。

javascript jquery google-chrome download

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

自定义 AuthorizeAttribute 未实现

在我们的 MVC 解决方案中,我们有两个自定义实现AuthorizeAttribute- 一个已命名BasicHttpAuthorizeAttribute并已在生产中使用多年,另一个RoleAuthorizeAttribute是最近添加的。

创建时RoleAuthorizeAttribute我只是复制BasicHttpAuthorizeAttribute并修改了一些已经覆盖的方法。

这两个属性都用于验证用户身份并RoleAuthorizeAttribute验证用户是否具有所需的角色。

但是,RoleAuthorizeAttribute永远不会对用户进行身份验证。它只是没有被调用,而是当非登录用户到达控制器操作并且代码请求上下文用户时,我们的 MVC 控制器会抛出异常。

下面是这个习俗的概要AuthorizeAttribute。如果我在所有这些方法上放置断点,我发现在发出请求时它们都不会被命中。

谁能解释为什么这个类不用于验证用户身份?为什么未经身份验证的用户不会被重定向到登录页面,但如果我交换RoleAuthorizeBasicHttpAuthorize简单地替换基本用户Authorize,那么它们就会被重定向?

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]    
public class RoleAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
    /// <summary>
    /// Gets or sets the <see cref="Role"/> enumerations required for authorization.
    /// </summary>
    public Role[] RequiredRoles
    {
        get {...}
        set {...}
    }

    public bool RequireSsl { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# authentication authorization authorize-attribute asp.net-authorization

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

可以在 CRON 表达式上触发 Azure 逻辑应用

我目前有一个 Azure 函数,它按照函数本身的 CRON 表达式指定的时间表运行。

出于业务原因,我现在希望让此函数在由逻辑应用程序发送的 HTTP 触发器上运行。

问题是我看不到如何使用 CRON 表达式来安排逻辑应用程序。逻辑应用程序的Recurrence机制允许我指定基于一种时间单位的时间段,x小时、每 x 分钟

在此输入图像描述

例如,是否可以指定此 CRON 表达式描述的计划:

0 30 0-5,13-23 * * 0-6

cron azure-logic-apps

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