我正在创建一个存储过程来搜索表.我有许多不同的搜索字段,所有这些字段都是可选的.有没有办法创建一个存储过程来处理这个?假设我有一个包含四个字段的表:ID,FirstName,LastName和Title.我可以这样做:
CREATE PROCEDURE spDoSearch
@FirstName varchar(25) = null,
@LastName varchar(25) = null,
@Title varchar(25) = null
AS
BEGIN
SELECT ID, FirstName, LastName, Title
FROM tblUsers
WHERE
FirstName = ISNULL(@FirstName, FirstName) AND
LastName = ISNULL(@LastName, LastName) AND
Title = ISNULL(@Title, Title)
END
Run Code Online (Sandbox Code Playgroud)
这种作品.但是它会忽略FirstName,LastName或Title为NULL的记录.如果未在搜索参数中指定Title,我想包含Title为NULL的记录 - 对于FirstName和LastName是相同的.我知道我可以用动态SQL做到这一点,但我想避免这种情况.
我正在构建一个带有服务层的Web应用程序.服务层将使用RESTful设计构建.我们的想法是,未来一段时间我们可能会构建使用与Web应用程序相同的服务层的其他应用程序(iPhone,Android等).我的问题是 - 如何实现登录?我想我无法从更传统的基于动词的设计转变为基于资源的设计.如果我用SOAP构建它,我可能会有一个名为Login的方法.在REST中我应该有一个资源.我很难理解如何为登录构建我的URI.应该是这样的:
http:// myservice / {username}?p = {password}
编辑:前端Web应用程序使用传统的ASP.NET框架进行身份验证.但是,在身份验证过程中的某些时候,我需要验证提供的凭据.在传统的Web应用程序中,我会进行数据库查找.但在这种情况下,我正在调用服务而不是进行数据库查找.所以我需要服务中的一些东西来验证提供的凭据.除了验证提供的凭据之外,我可能还需要在用户成功通过身份验证之后获得有关用户的某些信息 - 例如他们的全名,他们的ID等.我希望这会使问题更加清晰.
或者我没有想到这个正确的方法?我觉得我很难正确地描述我的问题.
科瑞
rest web-services login web-applications restful-authentication
我有一个工作正常的WCF Web服务.然而,有一个特定的呼叫失败 - 但只对某些用户失败.调用非常简单 - 它是一个获取Person对象列表的调用.
对于用户A,它工作正常.该服务查询数据库,创建Person对象列表并将其返回给调用应用程序.
对于用户B,它失败了.奇怪的是,当我调试服务似乎工作正常.它能够查询数据库并创建List对象并返回它.服务本身永远不会失败.但客户端应用程序收到"远程主机强行关闭现有连接"错误.
对我来说,当服务层试图以XML格式打包数据以发送回调用应用程序时,似乎发生了一些事情.我认为它必须是一个数据相关的问题,因为该调用适用于其他用户.我在视觉上看了看数据,我真的没有看到任何奇怪的东西.一个猜测是,用户B的数据有一些时髦的隐藏字符,因此导致服务意外关闭.这样的事情.
有任何想法吗?
我有一个包含许多参数的存储过程.我想编写我的查询,以便它与某些表连接,但仅当特定参数具有值时.举个例子:我有一个Person表.还有一个Address表,其中包含Person Addresses和一个包含Person Groups的Groups表.两者都是与Person表的一对多关系.我的存储过程有一个@AddressID参数和一个@GroupID参数.
查询始终只返回Person表中的字段.如果两个参数都没有值,则查询应返回Person表中的所有记录.如果提供了@AddressID参数,则它应仅返回在Address表中具有匹配记录的记录,并忽略Groups表.如果提供了@GroupID参数,则它应仅返回在Groups表中具有匹配记录的记录,并忽略Addresses表.如果提供了两个参数,那么它应该只显示两个表中具有匹配记录的记录.合理?
有一种简单的方法可以解决这个问题吗?
谢谢,科里
我有一个使用Sitecore 7.5和Solr 4.7构建的网站.我注意到一个非常奇怪的现象,某些内容项目没有被索引.这是正在发生的事情.
我有一个名为"内容页面"的数据模板.使用此数据模板的大多数内容项目都位于/ sitecore/content/Home/Corporate中.这样的事情:
/sitecore/content/Home/Corporate/About-Us
/sitecore/content/Home/Corporate/Careers
/sitecore/content/Home/Corporate/Terms-Of-Use
Run Code Online (Sandbox Code Playgroud)
我创建的一些测试项目存在于/ sitecore/content中,如下所示:
/sitecore/content/Test-1
/sitecore/content/Test-2
Run Code Online (Sandbox Code Playgroud)
所有这些页面都是使用"内容页面"数据模板构建的.重建索引然后转到Solr UI并执行查询后,我找不到Home节点下面的任何项目.当我查询_templatename:"内容页面"时 - 我只在结果中获得Test-1和Test-2.有谁知道为什么会发生这种情况?这真的很奇怪.我从未见过Solr根本没有索引某些物品的东西.它似乎基于它们在内容树中的位置.
任何人都可以对此有所了解吗?我觉得我今天浪费了一整天的时间在网上搜索和搜索有关如何执行此操作的任何信息.我创建了一个非常简单的WCF RESTful服务.它基本上是一个概念证明.我有一个简单的数据库,我只是想让它工作,以便我可以查看,创建,更新和删除项目.现在我只有查看和更新工作.我稍后会解决这个问题.现在我无法弄清楚为什么删除不起作用.到目前为止,我发现的几乎所有内容都告诉我,我需要禁用WebDAV模块.我做到了,然后我得到PUT工作.但我不能让DELETE工作.每当我尝试通过我的服务调用DELETE时,我会收到以下错误:
远程服务器返回意外响应:(405)方法不允许.
所以它似乎在我的服务器上的某个地方它不允许DELETE动词.但对于我的生活,我无法理解.我已经检查了Handler Mappings,处理程序允许所有动词用于.SVC扩展.我已禁用WebDAV.我不确定在哪里可以看.我在Windows Server 2008 R2上使用IIS 7.5.
(如果能提供帮助,我可以提供代码)
谢谢,科里
我有一个使用Solr 4.7作为搜索引擎的Sitecore 7.5站点.它很棒.这是一个多语言网站.我也在使用Alex Shyba编写的Partial Language Fallback模块.我已将其改编为与Sitecore 7.5配合使用,效果很好.我无法弄清楚的最后一部分是如何让Solr搜索与部分语言回退一起使用.我猜我需要做的是以某种方式在索引时我需要索引所有语言的内容并根据需要从后备语言中提取字段值.所以我要说我有以下内容:
Partial Language Fallback模块完美地处理了这种情况.无论当前的上下文语言是什么语言,我仍然可以看到"联系我们"页面和页面上的所有字段.
但我不确定我应该如何让Solr索引这个内容.我的猜测是,不知何故,我需要告诉Solr索引在所有4种语言中创建联系我们页面的完整索引,如果没有该语言的内容,则使用每个字段的英文内容.我在网上发现了一篇博文,展示了如何为Lucene做这个.但我不确定如何使用Solr做到这一点.有谁知道如何在Solr中处理这个问题?
我有一个RESTful WCF服务,我收到以下错误:对象图中可以序列化或反序列化的最大项目数是'65536'.更改对象图或增加MaxItemsInObjectGraph配额.
我以为我已经解决了这个问题,但显然没有.这是我的代码:
我使用的.SVC文件使用这样的自定义工厂:
<%@ ServiceHost Language="C#" Debug="true" Service="myService" Factory="myCustomWebServiceHostFactory" %>
Run Code Online (Sandbox Code Playgroud)
这是自定义工厂的代码
public class myCustomWebServiceHost : WebServiceHost
{
public myCustomWebServiceHost()
{
}
public myCustomWebServiceHost(object singletonInstance, params Uri[] baseAddresses)
: base(singletonInstance, baseAddresses)
{
}
public myCustomWebServiceHost(Type serviceType, params Uri[] baseAddresses)
: base(serviceType, baseAddresses)
{
}
protected override void OnOpening()
{
foreach (var endpoint in Description.Endpoints)
{
var binding = endpoint.Binding as WebHttpBinding;
if (binding != null)
{
const int fiveMegaBytes = 5242880;
binding.MaxReceivedMessageSize = fiveMegaBytes;
binding.MaxBufferSize = fiveMegaBytes;
binding.MaxBufferPoolSize = fiveMegaBytes; …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET应用程序,它始终使用生产服务器上75% - 100%的CPU.如何分析应用程序以确定哪些代码部分占用了最多的CPU?我看过几个不同的工具(Xte Profiler,EQATEC,dotTrace),但他们似乎都希望你在他们的工具中加载和运行应用程序.在我看来,他们希望您在他们的工具中加载应用程序并在本地运行测试(而不是在生产中).我希望在应用程序运行的同时对应用程序进行概要分析,让人们看到它实际发生了什么.这可能吗?
我是应用程序分析的新手,所以请原谅我,如果我错过了一些明显的东西,或者我没有正确地思考这个问题.
谢谢,科里
我正在使用ASP.NET登录控件.我希望能够为每个用户单独设置表单身份验证的超时(而不是在web.config中全局设置).根据我的理解,唯一的方法是手动设置AuthenticationTicket的超时.使用登录控件时有没有办法做到这一点?在我看来,登录控件抽象了所有这一切.我希望有一些方法可以继续使用Login Control,但也可以为每个用户单独设置FormsAuthentication超时.
谢谢,科里