小编Jon*_*Jon的帖子

正则表达式查找查询中的所有表名

我对正则表达式并不热衷,它让我的小脑袋融化了一些东西.

我试图在查询中找到所有表名称.所以说我有查询:

SELECT one, two, three FROM table1, table2 WHERE X=Y
Run Code Online (Sandbox Code Playgroud)

我想拉出"table1,table2"或"table1"和"table2"

但是,如果没有where声明怎么办?它可能是文件的结尾,或者可能有一个组或一个顺序等.我知道"大多数"时间这不会是一个问题,但我不喜欢编码"最"的想法情况和知道我留下了一个可能导致事情出错的漏洞.

这是一个可行的正则表达式吗?我是正则表达式吗?

(PS这将在C#中完成,但假设无关紧要).

.net regex sql

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

使用msdeploy部署MVC站点,包括CI服务器中没有虚拟目录设置的IIS设置

我试图弄清楚如何使用msdeploy与我的MVC站点能够自动化部署,包括在远程服务器上设置IIS.

我使用以下命令来创建包:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe Clients\PokerLeagueWebSite\PokerLeagueWebSite.csproj /T:Package /p:Configuration=Deployment
Run Code Online (Sandbox Code Playgroud)

我的设置如下:

local dev box using VS2010 + GIT
GITHUB for repo
Teamcity for CI server (different machine to dev box)
remote (same network) UAT server
Run Code Online (Sandbox Code Playgroud)

如果我勾选"包含在IIS中配置的IIS设置"和"包含此Web项目使用的应用程序池设置"并在我的开发框中构建软件包,那么从那里发布它可以很好地工作.这是我使用的命令:

C:\myproject\Packages\Deployment\PokerLeagueWebSite>PokerLeagueWebSite.deploy.cmd /Y /M:192.168.10.98:8172 /U:administrator /P:password
Run Code Online (Sandbox Code Playgroud)

这会在我的UAT服务器中创建虚拟目录,一切都很顺利.问题是当我提交github并且CI服务器下载并构建它时.当然,CI服务器上没有设置虚拟目录,因此构建/包失败.

我想要做的是使用msdeploy提供的包装,并能够远程部署站点和IIS.我想有几个选择:

1)将MVC项目文件更改为硬代码iis设置,以便在运行构建包时,它会创建具有正确设置的XML文件,以便可以从任何计算机进行部署.我认为这可以通过项目根目录中的package.xml文件来完成,但我不知道如何设置所有应用程序池和虚拟目录设置.感觉就像我在那里的一半,但无法得到最后的推动.

2)使用powershell更改创建的包XML文件,以便添加提取IIS设置.

第一个选项是可取的,因为它将所有信息保存在一个位置,您不需要记住在部署之前运行额外的脚本.

我相信我可以通过使用VS创建包并获得我需要的设置然后编写脚本来计算第二个选项,但我没有线索并且在阅读它时花了一些公平而没有任何成功我将如何做选项一.

NB

在我发布之前阅读一些建议的问题我可以看到某种可能性:

MSdeploy使用错误的虚拟目录名部署MVC 2应用程序

这个问题讨论了在msdeploy命令上传递额外的值,看起来没问题,但不是内部构建过程可以这么说.不确定要使用的所有命令,但我可以肯定谷歌.

这个链接似乎继续以上:http://msdn.microsoft.com/en-us/library/ee814764.aspx

此页面介绍了选项2的可能性.http://learn.iis.net/page.aspx/1082/web-deploy-parameterization/

认为这是方法:在网站的根目录中使用parameters.xml来获取项目内容:http: //vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html

编辑

我继续阅读和测试这个.使用项目根目录中的parameters.xml文件,我可以在那里得到参数.我的问题似乎是archive.xml文件.这是非常不同的,如果我没有使用IIS设置复选框勾选,导致程序包无法正确安装的原因.我已经开始阅读有关[project] .wpp.targets文件的内容,该文件可能会有所帮助,但很可能会丢失这个atm.

编辑2

所以我认为我需要做的是获取[project] .sourcemanifest.xml文件来改变它的一些设置.我相信这就是驱动archive.xml的原因,这就是现在的不同之处.我认为我的parameters.xml工作正常.

不使用IIS时,sourcemanifest.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <IisApp path="C:\hoh_code\GIT\ai-poker-project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" managedRuntimeVersion="v4.0" />
  <setAcl path="C:\hoh_code\GIT\ai-poker-project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" setAclResourceType="Directory" />
  <setAcl path="C:\hoh_code\GIT\ai-poker-    project\Clients\PokerLeagueWebSite\obj\Deployment\Package\PackageTmp" …
Run Code Online (Sandbox Code Playgroud)

iis asp.net-mvc msdeploy

8
推荐指数
1
解决办法
2833
查看次数

从映射的驱动器或共享文件夹运行.NET程序

我编写了一个C#Windows窗体应用程序,用于将一台计算机上的远程文件夹中的文件和文件夹("source"文件夹是映射驱动器 - "Z:\ folder")与另一台计算机上的另一个远程文件夹("目标")合并folder是共享文件夹的UNC路径 - "\\ computername\sharedfolder").我对这两个文件夹都拥有完全权限.当我在本地计算机上运行该程序时,它运行正常,但是当我尝试从源文件夹中运行它时,它会因安全异常而失败.

调用目标文件夹的DirectoryInfo构造函数(即DirectoryInfo(@"\\ computername\sharedfolder")时发生故障.我认为问题是因为我从映射驱动器运行程序.任何解决方法?


具体的例外是:请求类型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败.


UPDATE

好吧,我把我的应用程序放到Visual Studio 2008中(以前编码在2005年),针对.NET 3.5框架,编译并再次尝试.

我得到了完全相同的错误.


更新 - 决议

我尝试使用.NET 3.5,它没有用,然后我注意到你说3.5 SP1.绝对需要服务包.

问题解决了.谢谢.

.net c# unc

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

gridview将下拉列表绑定到List <keyvaluePair <int,string >>

我的数据库中有许多表,它们包含对键值对的引用:

电话号码类型:

  • 1 - 家
  • 2 - 工作
  • 3 - 移动
  • 4 - 传真

等等

所以我有一个表的类型,当它们在其他表中使用时,它们将int值作为外键引用.当我把它们拉出来时,我一直把它们存放keyvaluepair<int, string>在正在使用它们的类中.

当我需要获取它们的列表时,我想我只会创建它们的List <>而不是使用两种不同类型的数据类型来获取相同的数据.

当我在使用edittemplate位时需要在gridview中填充下拉列表时,我的问题已经到了.如果我使用数据源将其拉出来,它将在文本中写入[1 Home],而不是将int作为值,将Home作为要显示的文本.

我想我真的有一个多部分问题.

一:

我是傻瓜吗?这是一个非常糟糕的方法来获取数据并存储它(keyvaluepair部分)?我应该将它全部存储在数据表中吗?我不喜欢把它全部放在数据表中.我把我的DAL带到我的BLL并尝试将所有内容封装为对象或List<>对象而不是所有内容的表.大部分时间这都运作良好.

二:

如果我使用某个对象而不是数据表绑定到下拉列表的objectdatasource,我该如何设置当前选择的值,而不是让它只选择列表中的第一项?

编辑

正如下面所指出的,我是一个白痴,只需要设置DataValueField和DataKeyField.

要使下拉列表绑定,我必须这样做:

SelectedValue='<%# DataBinder.Eval(Container, "DataItem.PhoneType.Key") %>'
Run Code Online (Sandbox Code Playgroud)

我没有立刻看到它的原因是因为它没有出现在我的intellisense中,但是当我手动键入它时,它起作用了.

.net c# asp.net data-binding drop-down-menu

7
推荐指数
1
解决办法
4万
查看次数

teamcity building project无法启动MSBuild.exe.路径中的非法字符

我正在尝试在teamcity中构建一个项目.它将执行TFS的检出,文件在构建服务器上本地.如果我在服务器上手动运行build命令,它可以工作:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\myproj\myproj.csproj /t:build
Run Code Online (Sandbox Code Playgroud)

在Teamcity中,我有一个MSBuild的Build步骤:

构建fie路径是:Dev\Dev\project\myproj\myproj.csproj"工作目录留空mbuild版本:microsoft .net framework 4.0 msbuild toolsversion:4.0运行平台:X86目标:我试过构建"build"并留空命令行参数留空

如果我创建一个命令行构建任务并运行上面的命令行,它的工作原理.我不确定teammcity中命令行和msbuild任务之间有什么区别.

编辑

我在工作目录上尝试了一些变体:

项目中的输出路径设置为..\Build\Tools\myproj \

所以我将teamcity中的工作目录设置为:Dev\Dev\project\Build\Tools\myproj \

这没有用.

以下是teamcity的确切输出:

Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe /workdir:C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\Build\Tools\myproj /msbuildPath:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
in directory: C:\TeamCity\buildAgent\work\3446a5bd436eea87\Dev\Dev\project\Build\Tools\myproj


Failed to start MSBuild.exe. Illegal characters in path.
System.ArgumentException: Illegal characters in path.
   at System.IO.Path.CheckInvalidPathChars(String path)
   at System.IO.Path.IsPathRooted(String path)
   at JetBrains.TeamCity.Utils.FileUtil.MakeFullPath(String path, String workDir) in         c:\BuildAgent\work\c2314fd21f15dc97\src\Utils\src\FileUtil.cs:line 48
   at JetBrains.BuildServer.MSBuildBootstrap.RunArgs.get_ProjectFile() in     c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap\src\RunArgs.cs:line 156
   at     JetBrains.BuildServer.MSBuildBootstrap.Impl.MSBuildBootstrapFactory.Create(IClientRunArgs     args) in     c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap.Core\src\Impl\MSBuildBootstrapFact    ory.cs:line 29
   at JetBrains.BuildServer.MSBuildBootstrap.Program.Run(String[] _args) in     c:\BuildAgent\work\c2314fd21f15dc97\src\MSBuildBootstrap\src\Program.cs:line 67
Run Code Online (Sandbox Code Playgroud)

msbuild teamcity

7
推荐指数
1
解决办法
5341
查看次数

如何在Google搜索iframe上设置自定义宽度?

我正在尝试使用谷歌搜索我的网站:

http://www.houseofhawkins.com/search.php

某些屏幕分辨率并不好看.以下是谷歌提供的代码:

<div id="cse-search-results"></div>
<script type="text/javascript">
  var googleSearchIframeName = "cse-search-results";
  var googleSearchFormName = "cse-search-box";
  var googleSearchFrameWidth = 250;
  var googleSearchDomain = "www.google.com";
  var googleSearchPath = "/cse";
</script>
<script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
Run Code Online (Sandbox Code Playgroud)

我将"googleSearchFrameWidth"更改为250认为应该在px中设置宽度,(以600开头).但是对于较小的屏幕(1024*768),它突出了我的div的一面.

我做了些蠢事吗?

google-search google-custom-search

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

Web应用程序项目 - 如何使用ProfileCommon

我正在将我在旧盒子上开发的网站移植到新的开发环境中.我还没有复制所有文件,因为我没有一个很好的文件结构,并且我需要删除一些代码部分.

最初我创建了一个网站(文件 - >新建 - >网站).我想要一个文件结构,如:

用于构建的流行文件夹结构

所以我创建了一个新的空白解决方案,所以sln文件是独立的,然后添加项目(各种DLL项目)和ASP.NET Web应用程序.

这最后一部分似乎给我带来了一些问题,我现在收到以下错误:

"无法找到类型或命名空间名称'ProfileCommon'".

我找到了以下页面:

http://weblogs.asp.net/joewrobel/archive/2008/02/03/web-profile-builder-for-web-application-projects.aspx

这似乎有点长,我希望有人可能知道更好的解决方案.

我试图将ProfileCommon与CreateUser向导一起使用,因为我在其中添加了一些额外的信息.

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
    // Create an empty Profile for the newly created user
    ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);

    // Populate some Profile properties off of the create user wizard
    p.CurrentLevel = Int32.Parse(((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("clevel")).SelectedValue);

    // Save profile - must be done since we explicitly created it
    p.Save();
}
Run Code Online (Sandbox Code Playgroud)

Web.config文件:

<profile enabled="true">
<properties>
    <add name="CurrentLevel" type="Int32"/>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

如果有另一种方法可以将这些额外信息添加到创建向导中,或者只是更好地为新用户设置额外信息,那么我很满意,非常感激.

感谢您的帮助和建议.

c# asp.net profilecommon

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

如何在本地或远程部署msbuild zip包而不需要IIS参与

我正在创建一个允许应用程序部署自动化的应用程序,(https://github.com/twistedtwig/AutomdatedDeployments#readme).

这个想法是所有东西都在源代码控制,应用程序文件,应用程序配置以及IIS配置中.我的应用程序允许解决方案在构建到dev计算机之后自动部署(向sln/proj文件添加post build setp).它将允许CI服务器自动部署到其计算机以进行测试,以及CI服务器将成功构建推送到QA /测试/生产服务器.我对msdeploy的一个问题是需要先用网站/应用程序设置IIS(我的应用程序试图绕过它).

到目前为止,我可以自动通过配置文件创建,更新和删除应用程序池,网站和应用程序.我可以很好地同步文件和文件夹.最后一步是在msbuild中使用/ target:package开关为Web部署创建干净的文件结构.例如,我会运行如下命令:

msbuild.exe myMvcSite.csproj /target:clean /target:package /p:Configuration=Release /p:_PackageTempDir=C:\websites\mySite  /p:PackageLocation=C:\dropLocation\mySite.zip
Run Code Online (Sandbox Code Playgroud)

这将创建一个漂亮的zip文件,其内部文件路径为"C_C\wbesites\mySite"(我理解)可以同步到生产服务器.

我的问题是我如何部署这个zip文件.我希望它独立于任何IIS信息,即我只是将文件/文件夹推送到某个位置(在本地计算机上用于开发人员,或远程用于测试等).具有应用程序池和站点等的IIS的设置将单独处理.我尝试过的一些命令(及其输出)如下:

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\Temp\deploy\installer\test\testPackage.zip" -dest:auto
Info: Adding sitemanifest (sitemanifest).
Error: The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v2.0'. This application requires 'v4.0'.
Error count: 1.
Run Code Online (Sandbox Code Playgroud)

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\website\installer\testPackage.zip" -dest:contentpath=C:\temp\mytest
Error: Source (sitemanifest) and destination (contentPath) are not compatible for the given operation.
Error count: 1.
Run Code Online (Sandbox Code Playgroud)

第一个命令我试图让它用它具有的结构解压缩文件.虽然看起来对应用程序池的东西感到不安,(我不想让它接触).

第二个我试图绕过"自动"位,但这也不开心.

我很难找到关于这个过程的很多信息. …

msbuild web-deployment msdeploy continuous-deployment msbuild-4.0

6
推荐指数
1
解决办法
4606
查看次数

内部版本号中的分支名称

我正在尝试将分支名称放入内部版本号,但我找不到正确的参数.我正在使用内部版本号格式:%teamcity.build.branch%.{0}

它可以工作,但是当它尝试构建默认分支'dev'时,teamcity将其命名为<default>.

在此输入图像描述

怎么解决?

git teamcity branch

6
推荐指数
2
解决办法
3692
查看次数

信号器核心 (2.1) JWT 身份验证中心/协商 401 未经授权

所以我有一个 .net core (2.1) API,它使用 JWT 令牌进行身份验证。我可以登录并成功拨打经过身份验证的电话。

我正在为客户端使用 React (16.6.3),它获取 JWT 代码并对 API 进行经过身份验证的调用。

我正在尝试向站点添加信号集线器。如果我不在集线器类上放置 [Authorize] 属性。我可以连接、发送和接收消息(目前它是一个基本的聊天室)。

当我将 [Authorize] 属性添加到类时,React 应用程序会将 HttpPost 生成到example.com/hubs/chat/negotiate. 我会得到一个401状态码。在Authorization: Bearer abc.....头会向上传递。

要在 React 中构建集线器,我使用:

const hubConn = new signalR.HubConnectionBuilder()
            .withUrl(`${baseUrl}/hubs/chat`, { accessTokenFactory: () => jwt })
            .configureLogging(signalR.LogLevel.Information)
            .build();
Run Code Online (Sandbox Code Playgroud)

其中jwt变量是令牌。

我有一些身份验证设置:

services.AddAuthentication(a =>
{
    a.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    a.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.SaveToken = false;
    options.Audience = jwtAudience;

options.TokenValidationParameters = new TokenValidationParameters
{
    ValidateIssuer = true, …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-signalr

6
推荐指数
1
解决办法
6094
查看次数