小编Geo*_*rzi的帖子

使用控制器上的Xml注释的ASP.NET Web API帮助页面文档

我安装了ASP.NET Web API帮助页面包,并希望使用它来为我的API控制器操作生成文档,使用它们上面的Xml注释.

在Yao的MSDN博客上发现了一篇文章,他在文章中讨论了如何根据XML注释生成文档.

但是,在Register方法中HelpPageConfig,该SetDocumentationProvider方法需要一个XmlDocumentationProvider使用物理路径构建的实例到Xml文档文件.

还有另一种方法吗?我不清楚为什么我需要指向一个Xml文档文件.

谢谢

asp.net-web-api

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

部署使用SQLite的Windows 8 Metro应用程序

背景

我们正在使用System Center 2012在运行Windows 8 Enterprise x64的领域中将Windows 8 Metro风格的应用程序部署到三星平板电脑.平板连接到域并具有持久的DirectAccess连接,允许System Center将应用程序和更新推送到设备.

我们必须将我们的应用程序部署到现场可能有数百台设备,这就是我们进入System Center路线的原因.使用组策略在每个设备上安装代码签名证书.要部署应用程序,只需提供包输出并指定要安装它的设备集合.该应用程序只需几分钟即可显示在设备上.

我们遇到的问题是,当System Center部署我们的应用程序时,SQLite依赖关系丢失,我们的数据访问都不起作用.

关于我们的项目

我们的应用程序是一个使用SQLite作为后端的WinJS应用程序.但是,我们所有的数据访问代码都在WinJS项目引用的C#WinMD项目中.我们使用sqlite-net库与SQLite交谈 - 我们在C#项目中包含了它的源代码.

在Visual Studio中,我们安装了SQL Run for Windows Runtime扩展,如Tim Heuer的文章中所述.Metro应用程序引用了这个.

使用其他部署方法进行测试

当您在本地调试或运行它时,应用程序的SQLite数据访问工作正常 - 在Debug/Release和x86/x64中.

应用程序打包过程提供了一个PowerShell脚本,您可以根据需要使用该脚本来安装应用程序和开发人员许可证.使用PowerShell脚本安装我们的应用程序时,SQLite数据访问也可以正常工作.通过打包和安装应用程序的Debug/Release和x86/x64版本来验证这一点.

故障排除

当应用程序首次尝试使用SQLite时,我们会看到一个关于它无法找到sqlite3.dll的异常.

我们已经尝试/验证了以下内容:

  • 确认我们正在部署Release/x64版本
  • 检查WinRAR中的appx并验证它是否包含sqlite3.dll
  • 从C#项目而不是WinJS项目引用"SQLite for Windows Runtime"扩展
  • 还引用了C++运行时,这导致System Center在部署应用程序时失败.不知道为什么,但调查一下.

更新 问题是System Center在部署SQLite库所需的Visual C++运行时库依赖项时遇到问题.所以不幸的是,这不再是一个编程问题了.我们正在获得一些帮助,我将发布修复程序.

sql sqlite microsoft-metro windows-8 winjs

16
推荐指数
1
解决办法
1370
查看次数

在PowerShell中有条件地指定开关参数

我正在编写一个PowerShell脚本,该脚本使用SharePoint 2010 New-SPWeb cmdlet创建由Xml文件定义的站点:

<?xml version="1.0" encoding="utf-8" ?>
<siteStructure>
  <site>
    <url>Corporate</url>
    <name>Corporate</name>
    <language>1033</language>
    <addToQuickLaunch>0</addToQuickLaunch>
    <addToTopNav>0</addToTopNav>
    <useParentTopNav>1</useParentTopNav>
  </site>
</siteStructure>
Run Code Online (Sandbox Code Playgroud)

New-SPWeb cmdlet有三个开关参数:

  1. AddToQuickLaunch
  2. AddToTopNav
  3. UseParentTopNav

当Xml中的匹配值为0或$ true时,我无法确定如何仅设置switch参数.

在调用New-SPWeb来设置三个开关参数时,我几乎需要某种内联if语法.

$siteStructureData = [xml](Get-Content .\Data-SiteStructure.xml)

# find the template to use
$webTemplate = Get-SPWebTemplate | Where {$_.Title -like $templateName } 

if ($webTemplate)
{
    # iterate through and create sites
    foreach ($siteToCreate in $siteStructureData.siteStructure.site)
    {   
        "Creating site $webtitle at $URL/$webUrl"

        # http://technet.microsoft.com/en-us/library/ff607579.aspx
        New-SPWeb `
            -Url "$URL/$siteToCreate.url" `
            -Name $siteToCreate.name `
            -Template $webTemplate `
            -Language $siteToCreate.language 
            # …
Run Code Online (Sandbox Code Playgroud)

powershell sharepoint-2010

15
推荐指数
2
解决办法
4557
查看次数

如何最好地在成员资格提供程序上实现自定义搜索

开箱即用,System.Web.Security.Membership实现了几种搜索方法:

  • FindUsersByEmail
  • FindUsersByName

我正在使用CodePlexWSAT项目来管理我的会员数据库.该工具在ProfileCommon类中实现额外的配置文件属性.

假设我在用户的个人资料中有一个名为Firm的属性.

我需要实现一个自定义搜索方法来搜索Firm属性,我想在代码中完成所有这些操作.不想编写存储过程(因为所有配置文件属性都存储在WSAT工具的1个数据库列中).

这样的事情显然不是正确的方法,但这里只是演示访问用户的配置文件属性:

    private MembershipUserCollection SearchByFirm(string firmName, MembershipUserCollection allRegisteredUsers)
{
    MembershipUserCollection searchResults = new MembershipUserCollection();

    foreach (MembershipUser user in allRegisteredUsers)
    {
        ProfileCommon profile = Profile.GetProfile(user.UserName);
        if (profile.Firm.ToLowerInvariant().Contains(firmName.ToLowerInvariant()))
        {
            searchResults.Add(user);
        }
    }
    return searchResults;
}
Run Code Online (Sandbox Code Playgroud)

我可以把它变成一些LINQ善良吗?

asp.net-membership

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

SQLite 对使用 DateTimeOffset 从 C# 填充的日期时间列进行排序

我正在开发一个使用 SQLite 作为本地数据库的 Windows 8 Metro 应用程序。

数据库中的一个表包含日期时间列。在运行按日期时间列对结果集进行排序的查询时,我看到了意外的结果 - 结果集的排序方式与您预期的不同。

日期时间列填充了由 C# 中的 Metro 应用程序生成的数据;例如作为DateTimeOffset.Now. WinRT 不支持DateTime,因此我们使用DateTimeOffset.

您可以在一个简单的表中复制它:

CREATE TABLE "Foo" ("DateOfFoo" DATETIME)
Run Code Online (Sandbox Code Playgroud)

以下是一些基于我们应用程序数据的示例数据(请注意,我位于 PDT 时区,即 UTC -7):

INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 8:08:56 AM -07:00

INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 8:13:42 AM -07:00

INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 12:46:36 PM -07:00
Run Code Online (Sandbox Code Playgroud)

一个简单的查询,例如:

Select * From …
Run Code Online (Sandbox Code Playgroud)

sqlite microsoft-metro

5
推荐指数
1
解决办法
4352
查看次数