我有一个HTTPModule,用于重定向数据中心的网站和Azure平台上运行的网站之间的流量.此HTTPModule从Azure表存储中检索其重定向规则.
重定向在我的本地开发计算机上以及在Azure上运行时都能正常工作.但是,当我将模块部署到我的数据中心服务器(IIS 7,WS 2008 R2标准64位,.NET 4.0,ASP.NET 4.0)时,我收到以下错误
Parser Error Message: Could not load file or assembly 'msshrtmi' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Line 124: <add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
Line 125: <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
Line 126: <add assembly="*" />
Line 127: </assemblies>
Line 128: <buildProviders>
Source File: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config Line: 126
Run Code Online (Sandbox Code Playgroud)
"msshrtmi.dll"实际存在于我的部署bin目录中.
如果我删除此dll数据中心站点工作正常,但HTTPModule无法从表存储加载其配置数据,而是抛出以下错误
---> System.TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception. ---> System.IO.FileNotFoundException: Could …Run Code Online (Sandbox Code Playgroud) 我有一个订单队列,由多个订单处理器通过存储过程访问.每个处理器都传入一个唯一的ID,用于锁定接下来的20个订单供自己使用.然后,存储过程将这些记录返回给订单处理器以进行操作.
在某些情况下,多个处理器能够检索相同的"OrderTable"记录,此时它们会尝试同时对其进行操作.这最终导致在该过程的后期抛出错误.
我的下一步行动是允许每个处理器获取所有可用的订单并且只是循环处理器,但我希望简单地使这部分代码线程安全,并允许处理器随时抓取记录.
所以明确地 - 任何想法为什么我遇到这种竞争条件以及如何解决问题.
BEGIN TRAN
UPDATE OrderTable WITH ( ROWLOCK )
SET ProcessorID = @PROCID
WHERE OrderID IN ( SELECT TOP ( 20 )
OrderID
FROM OrderTable WITH ( ROWLOCK )
WHERE ProcessorID = 0)
COMMIT TRAN
SELECT OrderID, ProcessorID, etc...
FROM OrderTable
WHERE ProcessorID = @PROCID
Run Code Online (Sandbox Code Playgroud) 我在许多网站上工作的文件可以追溯到2000年.这些网站随着时间的推移有机增长,导致大量孤立的网页,包括文件,图像,CSS文件,JavaScript文件等......这些孤立的文件导致一些问题包括可维护性差,可能存在安全漏洞,客户体验不佳以及像我这样疯狂地驾驶OCD/GTD怪胎.
这些文件数量为数千个,因此完全手动解决方案是不可行的.最终,清理过程需要相当大的质量保证工作,以确保我们不会无意中删除所需的文件,但我希望开发一种技术解决方案来帮助加快手动工作.此外,我希望将流程/实用程序放在适当的位置,以帮助防止将来发生这种混乱局面.
环境考虑因素:
在开始之前,我想从其他成功导航过类似过程的人那里得到一些反馈.
具体我正在寻找:
我不是在寻找:
C#规范声明参数类型不能同时具有协变性和逆变性.
这在创建协变或逆变接口时很明显,您可以分别使用"out"或"in"来修饰类型参数.没有选项允许同时("outin").
这种限制只是一种语言特定的约束,还是存在更深层次,更基本的理由,这种理由会使你不希望你的类型既有协变性又有逆变性?
编辑:
我的理解是阵列实际上既是协变的又是逆变的.
public class Pet{}
public class Cat : Pet{}
public class Siamese : Cat{}
Cat[] cats = new Cat[10];
Pet[] pets = new Pet[10];
Siamese[] siameseCats = new Siamese[10];
//Cat array is covariant
pets = cats;
//Cat array is also contravariant since it accepts conversions from wider types
cats = siameseCats;
Run Code Online (Sandbox Code Playgroud) 我有一个预先存在的MVC应用程序,我使用Nuget添加了Web API和Web API自我文档.虽然Web API控制器运行正常(返回对HTTP请求的有效响应),但帮助控制器未找到任何要记录的Web API方法.
在帮助控制器索引操作"Configuration.Services.GetApiExplorer().ApiDescriptions"返回0结果.
我甚至从另一个功能正常的网络应用程序复制整个"HelpPage"区域.
填充ApiDescriptions的是什么,我需要设置任何配置设置以将我的API暴露给文档吗?
我尝试过的事情:
我经常在我的解决方案的Configuration Manager中创建自定义构建配置.当我将先前创建的项目包含到解决方案中时,它们不会自动包含这些新配置.我发现使用适当的配置设置回填这些项目的唯一方法是手动编辑项目文件.
有没有办法强制解决方案中的所有项目都使用同一组Configuration Manager配置?
主要编辑: 我误读了这篇文章!评论是关于类的finalize方法而不是finally块:).道歉.
我刚刚读到你不应该在finally块中关闭或处理数据库连接,但文章没有解释原因.我似乎无法找到一个明确的解释,为什么你不想这样做.
在 Microsoft.Azure.Storage.Blob 库中,您可以使用 SAS URI 创建 Blob 上传客户端。
var cloudBlockBlob = new CloudBlockBlob(blobSasUri);
Run Code Online (Sandbox Code Playgroud)
但是,该库已被弃用,取而代之的是 Azure.Storage.Blobs。我不确定如何使用 SAS URI 创建 BlobContainerClient 实例,因为该类的构造函数都不允许使用 URI 参数。这可能吗?或者我是否只需要使用 HttpClient 来调用 Blob 服务?
c# ×4
.net ×2
azure ×2
sql-server ×2
asp-classic ×1
asp.net ×1
asp.net-mvc ×1
covariance ×1
database ×1
gtd ×1
httpmodule ×1
queue ×1
sql ×1
t-sql ×1
variance ×1
vbscript ×1