小编Jos*_*osh的帖子

测试Oracle存储过程的最简单方法

我正在开发一个带有Oracle数据库的ASP.NET项目.我们使用TOAD来添加/管理存储过程 - 通常我喜欢TOAD和Oracle.我发现令人沮丧的一件事是找到一种简单的方法来测试Oracle Stored Proc,例如SQL Server的"exec [SP_NAME] Param1,Param2,ParamN"语法.

我们所有的存储过程都输出Ref Cursors.以下是存储过程的示例:

CREATE OR REPLACE PROCEDURE APP_DB1.GET_JOB
(
    p_JOB_ID IN JOB.JOB_ID%type,
    outCursor OUT MYGEN.sqlcur
)
IS
BEGIN
    OPEN outCursor FOR
    SELECT *
    FROM JOB
    WHERE JOB_ID = p_JOB_ID;
END GET_JOB;
/

有什么建议?

asp.net oracle

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

实体框架代码第一个通用数据库审计字段

我是Entity Framework的新手,过去我直接使用Enterprise Library或ADO.NET将模型映射到数据库表.我使用的一种模式是将我的公共审计字段放在基类中的每个表中,然后为每个对象继承该基类.

我采取两个步骤来保护两个字段(Created,CreatedBy):

  1. 在Base Enitity上创建一个无参数构造函数私有,并创建第二个需要Created和CreatedBy的构造函数在创建时传递.
  2. 使setter Private,以便在创建对象后无法更改值.

基类:

using System;

namespace App.Model
{
    [Serializable()]
    public abstract class BaseEntity
    {
        public bool IsActive { get; private set; }
        public DateTimeOffset Created { get; private set; }
        public string CreatedBy { get; private set; }
        public DateTimeOffset LastUpdated { get; protected set; }
        public string LastUpdatedBy { get; protected set; }

        private BaseEntity() { }

        protected BaseEntity(DateTimeOffset created, string createdBy)
        {
            IsActive = true;
            Created = created;
            CreatedBy = createdBy;
            LastUpdated …
Run Code Online (Sandbox Code Playgroud)

c# oop entity-framework entity-framework-5

8
推荐指数
2
解决办法
3434
查看次数

使用ASP.NET 3.5验证进行电子邮件格式验证的最佳正则表达式

我使用以下两个正则表达式来测试带有ASP.NET验证控件的有效电子邮件表达式.我想知道从性能的角度来看哪个是更好的表达,或者有人有更好的表达.

 - \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
 - ^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

我正在努力避免在BCL团队博客上描述的"指数缓慢表达"问题.

UPDATE

根据反馈,我最终创建了一个函数来测试电子邮件是否有效:

Public Function IsValidEmail(ByVal emailString As String, Optional ByVal isRequired As Boolean = False) As Boolean
    Dim emailSplit As String()
    Dim isValid As Boolean = True
    Dim localPart As String = String.Empty
    Dim domainPart As String = String.Empty
    Dim domainSplit As String()
    Dim tld As String

    If emailString.Length >= 80 Then
        isValid = False
    ElseIf emailString.Length > 0 And emailString.Length < 6 Then
        'Email is too short
        isValid = False
    ElseIf …
Run Code Online (Sandbox Code Playgroud)

regex asp.net

7
推荐指数
2
解决办法
4万
查看次数

ASP.NET Core脚本标记帮助器asp-fallback-src无法通过完整性检查

当我测试使用ASP.NET Core脚本标记帮助器回退到本地文件时,收到以下错误:

无法在具有计算得出的SHA-256完整性'oozPintQUive6gzYPN7KIhwY / B + d8 + 5rPTxI1ZkgaFU ='的资源' http:// localhost:48888 / js / jquery.min.js ' 的'integrity'属性中找不到有效的摘要。资源已被阻止。

本地文件的文本等于CDN版本,但不等于二进制文件。这成为一个问题,因为不仅要对完整性哈希与主要源进行比较,而且还要对后备源进行比较,并且由于生成不同的哈希而使检查失败。

这是一个例子:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"
    asp-fallback-src="~/js/jquery.min.js"
    asp-fallback-test="window.jQuery"
    crossorigin="anonymous"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
Run Code Online (Sandbox Code Playgroud)

只要浏览器可以访问Google的CDN,它就可以正常工作。但是,如果您将源更改为错误的值,例如寻找不存在的版本(例如“ 3.9.9”),则会导致该版本回退到本地文件。该本地文件将无法加载,因为它们不是二进制相等的(不同的哈希值)。

理想情况下,完整性检查将不会应用于本地文件,因为我们信任受我们控制的本地文件。另一种选择是我们可以为本地后备定义不同的哈希值。

这些选项都可用吗?如果没有,是否有其他解决方法?我试图避免手动从CDN复制下来以使其匹配,因为将来的更新需要增加维护工作。我想使用包裹管理器。

asp.net-core-mvc asp.net-core asp.net-core-2.0

7
推荐指数
1
解决办法
2044
查看次数

以编程方式从POP3打开电子邮件并提取附件

我们有一家供应商将CSV文件作为电子邮件附件发送.这些CSV文件包含导入我们的应用程序的状态.我正在尝试端到端地自动化流程,但它目前依赖于有人打开电子邮件,将附件保存到服务器共享,因此应用程序可以使用该文件.

由于我无法说服供应商改变他们的流程,例如提供FTP位置或Web服务,因此我不得不尝试自动化现有流程.

有没有人知道从POP3帐户以编程方式打开电子邮件并提取附件的方法?首选解决方案将驻留在Windows 2003服务器上,编写VB.NET并且安全.应用程序可以驻留在与POP3服务器相同的服务器上,例如,我们可以设置Windows Server附带的免费POP3服务器,并对存储在文件系统上的邮件文件进行拉取.

顺便说一句,如果存在,我们愿意支付现成的解决方案.

注意:我确实看过这个问题,但答案指向一个不处理附件的CodeProject解决方案.

vb.net asp.net pop3

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

IsDirty标志图案

我有一个BLL的基类,包括以下功能:

    public bool IsDirty { get; protected set; }

    internal void SetField<TParam>(ref TParam field, TParam value)
    {
        if (EqualityComparer<TParam>.Default.Equals(field, value) == false)
        {
            field = value;
            IsDirty = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在继承基类的类中,我使用它作为SET对象的包装器,例如:

    public string UserName
    {
        get { return _userName; }
        set { SetField(ref _userName, value); }
    }
Run Code Online (Sandbox Code Playgroud)

我使用IsDirty属性来测试是否需要发布更新.如果至少有一个属性发生更改,则保存到数据库.这适用于大多数类型,但集合和列表可以在不使用set的情况下更改.我为Collection写了一个包装器,在List上有一个IsDirty标志,可以测试它的变化:

    public class CollectionChangeTracked<T> : Collection<T>
    {
        public bool IsDirty {get; set;}

        public CollectionChangeTracked()
        {
            IsDirty = false;
        }

        protected override void InsertItem(int index, T newItem)
        {
            base.InsertItem(index, newItem);
            IsDirty = true; …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

ASP.NET MVC jQuery更新的最佳实践

历史

我创建了一个新的ASP.NET MVC 4.0项目,该项目是基本的,并且不包括默认情况下Intranet和Internet模板插入的jQuery或其他脚本.然后我使用NuGet添加脚本并安装了通常由MVC Intranet和Internet模板安装的所有jQuery和相关文件的最新版本.

当我尝试运行应用程序时,我开始收到错误.显然,与jQuery 1.9之前编写的库/扩展不兼容.似乎在解决了一个问题之后,我遇到了另一个问题.我终于放弃并复制了已经安装的js文件的版本.这解决了我能够使用远程验证等功能的问题.

问题

由于我是ASP.MVC的新手,我想知道最佳实践与jQuery更新有什么关系.我假设我需要等到所有库/扩展都赶上,但我需要遵循每个库/扩展的状态来确定何时可以升级.

  1. 是等待只是使用随MVC模板安装而不升级的版本更好吗?当MVC的下一次更新出来时,然后将这些库/扩展复制到更新模板使用的脚本文件夹中?
  2. 我注意到MVC模板不安装jQuery NuGet包,而是将文件安装到Content和Script文件夹.这是为了防止开发人员升级和遇到我使用较新版本的库/扩展时发现的问题吗?
  3. Microsoft是否会更新jquery.unobtrusive-ajax.js和相关库以更新ASP.NET MVC?如果是这样,那么在ASP.NET MVC更新之前阻止更新依赖关系似乎是有意义的.

asp.net-mvc asp.net-mvc-4

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

只读字段或属性

有没有办法让一个只读字段或一个没有setter映射的属性到一个具有Entity Framework Code First的数据库列?

我发现两者都被忽略了,例如:

using System;

namespace App.Model
{
    public class Person
    {
        string _address1; // Private Field to back the Address Property

        public string Address1 // Public Property without a Setter
        {
            get { return _address1; }
        }


         public readonly string Address2; // Public Read Only Field
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有Fluent API调用或其他方法来完成?

c# entity-framework ef-code-first entity-framework-5

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

ASP.NET MVC中的HttpClient Singleton实现

www.asp.net上阅读此博客文章和官方说明:

HttpClient旨在实例化一次,并在应用程序的整个生命周期中重复使用.特别是在服务器应用程序中,为每个请求创建一个新的HttpClient实例将耗尽重负载下可用的套接字数量.这将导致SocketException错误.

我发现我们的代码在每次调用时都处理了HttpClient.我正在更新我们的代码,以便我们重用HttClient,但我关心的是我们的工具但不是线程安全的.

以下是新代码的当前草案:

对于单元测试,我们为HttpClient实现了一个包装器,消费者调用包装器:

 public class HttpClientWrapper : IHttpClient
    {
        private readonly HttpClient _client;

        public Uri BaseAddress
        {
            get
            {
                return _client.BaseAddress;
            }

            set
            {
                _client.BaseAddress = value;
            }
        }

        public HttpRequestHeaders DefaultRequestHeaders
        {
            get
            {
                return _client.DefaultRequestHeaders;
            }
        }

        public HttpClientWrapper()
        {
            _client = new HttpClient();
        }

        public Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, String userOrProcessName)
        {
            IUnityContainer container = UnityCommon.GetContainer();
            ILogService logService = container.Resolve<ILogService>();

            logService.Log(ApplicationLogTypes.Debug, JsonConvert.SerializeObject(request), userOrProcessName);

            return _client.SendAsync(request);
        }

        #region IDisposable Support
        private …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc static async-await dotnet-httpclient

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

在Azure网站预览中删除服务器和X-Powered-By HTTP标头

为了安全起见,我想删除任何显示有关运行我的应用程序的操作系统,Web服务器或框架的详细信息的HTTP标头.我能够使用在SO和其他地方找到的文章,使用IIS Express在本地显示所有内容.不幸的是,当我发布到我的Azure网站预览时,仍然有三个标题:

  1. 服务器:Microsoft-IIS/7.5
  2. X-Powered-By:ARR/2.5
  3. X-Powered-By:ASP.NET

我找到的文章是针对Azure Web角色而不是网站预览,例如本文.

有谁知道如何从网站预览中删除?

azure

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