我在Visual Studio 2008中的Web项目中工作.当我点击F12(或右键单击并选择Go To Definition)时,Visual Studio始终会转到Meta数据文件而不是转到源.
一些要点:
有没有其他人看到这种行为和/或知道如何解决它?
所以这里有一些我从未见过的语法,有人能告诉我这意味着什么吗?不确定这是否应该是抽象属性声明的一些简写或什么或什么.
public Class1 myVar { get; set; }
Run Code Online (Sandbox Code Playgroud)
值得一提的是,Class1是一个抽象类.
我支持/增强了用Classic ASP/VBScript编写的Web应用程序.自从我使用日常生产能力以来已经过去了大约10年.我刚刚遇到了一个我认为是"陷阱"的问题,并且想知道其他人是否有类似我应该学会了解的事情.
我的问题:
我必须将SQL表中的列从float转换为decimal.事实证明,十进制不是vbscript中真正支持(或支持得很好)的类型.所以下面的代码:
Dim var1, var2
var1 = rs("DecimalField1").Value
var2 = rs("DecimalField2").Value
If (var1 <> var2) Then
'Do Something'
End If
Run Code Online (Sandbox Code Playgroud)
会在线路上出现类型不匹配错误:
If (var1 <> var2) Then
Run Code Online (Sandbox Code Playgroud)
经过多次搜索,我发现:
var1 = CDBL(rs("DecimalField1").Value)
var2 = CDBL(rs("DecimalField2").Value)
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.但这似乎并不是一个显而易见的事情,我花了一段时间才弄清楚为什么我在那条线上遇到类型不匹配.
所以我对每个人的问题是,你遇到过这样的其他小问题吗?ASP/vbscript中有哪些东西你会被认为是"陷阱",我应该注意什么?
首先,我知道这个似乎问同样问题的问题.但是我会稍微修改一下再问一次.
我正在开发一个打印PDF的项目.我们有一个PDF操作库.我们可以使用它将PDF呈现为System.Drawing.Printing.PrintDocument对象可以使用的文件,并在c#中打印.我们将拥有一个Azure Worker角色,需要多个1页的pdf并将它们转换为一个大的pdf,我希望有另一个Azure辅助角色,然后在本地将这个大型PDF打印到Windows打印服务器.
由于打印部分速度慢得多(与pdf创建/聚合片相比),我希望能够将其托管在天蓝色中以便轻松扩展.
我最初的想法是"我认为这甚至不可能.Azure如何能够了解我本地打印服务器的任何信息." 这是上述类似问题的基本答案.但经过一些搜索,我发现一些结果似乎表明设置VPN站点到站点隧道或ExpressRoute连接将让我做我想要的.但是我对Azure相对较新,我发现的结果是实际的,有用的,有用的细节.
如果无法完成,那么我可以在本地设置应用服务器来进行打印.但如果有人对如何实现这一点有想法或更多的见解,我很乐意听到它.
我正在研究一个传统的ASP应用程序.我试图将值(40.33)插入到SQL Server 2000中恰好是浮点类型的字段中.我在应用程序中看到的每个地方(通过一些日志记录)都会向存储过程发送40.33.当我在调用时对数据库运行SQL事件探查器时,我在跟踪中看到的值是4.033000183105469e + 001
所有额外的垃圾来自哪里(183105469)?
为什么当我通过40或40.25时没有什么额外的?
这只是使用float的奇怪副作用之一吗?当我写一些东西时,我通常使用金钱或小数或其他东西,所以不熟悉float数据类型.
示例查询:
select *
from A join B on A.ID = B.SOMEVALUE
where A.VALUE="something" and
B.ID =
(select ID from B where SOMEVALUE = A.ID and
THISDATE = (select max(SOMEDATE) from B where ...))
Run Code Online (Sandbox Code Playgroud)
因此,如果您可以阅读SQL,您应该看到我正在做一些相关的子查询来缩小连接的结果.(是的,这非常简化).
在某些情况下子查询:
select ID from B where SOMEVALUE = A.ID and
THISDATE = (select max(SOMEDATE) from B where ...)
Run Code Online (Sandbox Code Playgroud)
可以返回多于1个值,这会导致错误
"子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做."
我完全期待.这显然不是一件好事,我有代码(希望)防止这些重复项首先进入数据库(即表B 应该只有1行匹配
SOMEVALUE = A.ID and max(SOMEDATE)
Run Code Online (Sandbox Code Playgroud)
然而,最终用户如果没有创造性,却找不到破解软件的方法.
所以现在我的问题:
将第一个子查询更改为更好
select top 1 * from B ...
Run Code Online (Sandbox Code Playgroud)
当/如果(希望永远不会)出现这种情况或让错误通过时,防止用户看到错误.我倾向于不添加top语句并让错误通过而不是让用户看到可能不正确的数据.我想知道在这种情况下是否有人对最佳实践有任何想法......
c# ×2
sql ×2
asp-classic ×1
azure ×1
decimal ×1
pdf ×1
properties ×1
sql-server ×1
subquery ×1
vbscript ×1