我正在开发一个带有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;
/
有什么建议?
我是Entity Framework的新手,过去我直接使用Enterprise Library或ADO.NET将模型映射到数据库表.我使用的一种模式是将我的公共审计字段放在基类中的每个表中,然后为每个对象继承该基类.
我采取两个步骤来保护两个字段(Created,CreatedBy):
基类:
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) 我使用以下两个正则表达式来测试带有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) 当我测试使用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复制下来以使其匹配,因为将来的更新需要增加维护工作。我想使用包裹管理器。
我们有一家供应商将CSV文件作为电子邮件附件发送.这些CSV文件包含导入我们的应用程序的状态.我正在尝试端到端地自动化流程,但它目前依赖于有人打开电子邮件,将附件保存到服务器共享,因此应用程序可以使用该文件.
由于我无法说服供应商改变他们的流程,例如提供FTP位置或Web服务,因此我不得不尝试自动化现有流程.
有没有人知道从POP3帐户以编程方式打开电子邮件并提取附件的方法?首选解决方案将驻留在Windows 2003服务器上,编写VB.NET并且安全.应用程序可以驻留在与POP3服务器相同的服务器上,例如,我们可以设置Windows Server附带的免费POP3服务器,并对存储在文件系统上的邮件文件进行拉取.
顺便说一句,如果存在,我们愿意支付现成的解决方案.
注意:我确实看过这个问题,但答案指向一个不处理附件的CodeProject解决方案.
我有一个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) 我创建了一个新的ASP.NET MVC 4.0项目,该项目是基本的,并且不包括默认情况下Intranet和Internet模板插入的jQuery或其他脚本.然后我使用NuGet添加脚本并安装了通常由MVC Intranet和Internet模板安装的所有jQuery和相关文件的最新版本.
当我尝试运行应用程序时,我开始收到错误.显然,与jQuery 1.9之前编写的库/扩展不兼容.似乎在解决了一个问题之后,我遇到了另一个问题.我终于放弃并复制了已经安装的js文件的版本.这解决了我能够使用远程验证等功能的问题.
由于我是ASP.MVC的新手,我想知道最佳实践与jQuery更新有什么关系.我假设我需要等到所有库/扩展都赶上,但我需要遵循每个库/扩展的状态来确定何时可以升级.
有没有办法让一个只读字段或一个没有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调用或其他方法来完成?
在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) 为了安全起见,我想删除任何显示有关运行我的应用程序的操作系统,Web服务器或框架的详细信息的HTTP标头.我能够使用在SO和其他地方找到的文章,使用IIS Express在本地显示所有内容.不幸的是,当我发布到我的Azure网站预览时,仍然有三个标题:
我找到的文章是针对Azure Web角色而不是网站预览,例如本文.
有谁知道如何从网站预览中删除?
c# ×4
asp.net ×3
asp.net-mvc ×2
.net ×1
asp.net-core ×1
async-await ×1
azure ×1
oop ×1
oracle ×1
pop3 ×1
regex ×1
static ×1
vb.net ×1