我有一个Excel文件,其中包含一些西班牙语字符(波浪号等),我需要将其转换为CSV文件以用作导入文件.但是,当我另存为CSV时,它会破坏非特殊的西班牙语字符,而不是ASCII字符.它似乎也是用左右引号和长短划线来做的,它们似乎来自原始用户在Mac中创建Excel文件.
由于CSV只是一个文本文件,我确信它可以处理UTF8编码,所以我猜它是一个Excel限制,但我正在寻找一种从Excel到CSV并保留非ASCII字符的方法完整.
我让OwinStartup配置代码完美运行,然后它停止工作.不幸的是,我不确定我做了什么让它停止工作并且很难搞清楚它.
为了确保我已经涵盖了基础知识,我加倍检查以确保我拥有
[assembly:OwinStartup(typeof(WebApplication.Startup))]
Run Code Online (Sandbox Code Playgroud)
正确分配属性并确保我没有owin的appSetting:AutomaticAppStartup设置为false所以我将一个设置为true以保证安全,因为之前没有任何内容.
<add key="owin:AutomaticAppStartup" value="true" />
Run Code Online (Sandbox Code Playgroud)
我也尝试过专门调用appSetting:
<add key="owin:appStartup" value="WebApplication.Startup" />
Run Code Online (Sandbox Code Playgroud)
在它停止工作之前,我将Microsoft.Owin.Security NuGet包升级到2.0.2,所以我尝试将它们恢复到2.0.1(这很痛苦),但它没有改变任何东西.我在项目上安装了WebActivator并使用它来引导其他东西,但我已经在新的WebApplication模板上测试了它并且它在那里工作,所以我不认为那是罪魁祸首.
我还尝试删除我的Startup类并使用Visual Studio在Add New Item中使用OWIN Startup Class类型添加一个新类,并且也没有被调用.接下来我尝试添加第二个Startup类,因为我知道如果定义了多个OwinStartup属性它将抛出异常,但它没有抛出任何异常.
不知道还有什么可以尝试.有什么想法吗?
更新
事实证明Resharper在我用它删除未使用的引用时删除了对Microsoft.Owin.Host.SystemWeb的引用.
我正在使用一个基本控制器的想法,该控制器使用通用存储库为我的API控制器提供基本的CRUD方法,这样我就不必在每个新控制器中复制相同的基本代码.但是,当它在基本控制器中时,会遇到路由属性被识别的问题.为了准确显示我遇到的问题,我创建了一个非常简单的WebAPI控制器.
当我在主控制器中有Get方法并且它直接从ApiController继承时,我没有任何问题,这可以按预期工作.
[RoutePrefix("admin/test")]
public class TestController : ApiController
{
[Route("{id:int:min(1)}")]
public string Get(int id)
{
return "Success";
}
}
Run Code Online (Sandbox Code Playgroud)
当我将Get方法移动到基本控制器时,它返回404页面的内容.
[RoutePrefix("admin/test")]
public class TestController : TestBaseController
{
}
public class TestBaseController : ApiController
{
[Route("{id:int:min(1)}")]
public string Get(int id)
{
return "Success";
}
}
Run Code Online (Sandbox Code Playgroud)
一些更有趣的笔记:
我可以在GET/Test/1上访问该操作.所以它仍然基于默认路线找到它.
当我尝试访问POST/admin/test时,它返回以下JSON
{"Message":"找不到与请求URI匹配的HTTP资源' http://test.com/admin/test'.","MessageDetail ":"找不到与名为'admin'的控制器匹配的类型. " }
有没有人知道如何让路由使用基本控制器的属性?
有没有办法等待一个承诺,以便你可以从中获得实际结果并返回而不是返回承诺本身?我正在考虑类似于C#await关键字如何与Tasks一起工作的东西.
下面是一个示例,说明为什么我希望像canAccess()这样的方法返回true或false而不是promise,以便可以在if语句中使用它.方法canAccess()将使用$ http或$ resource进行AJAX调用,然后以某种方式等待promise得到解决.
看起来像这样:
$scope.canAccess = function(page) {
var resource = $resource('/api/access/:page');
var result = resource.get({page: page});
// how to await this and not return the promise but the real value
return result.canAccess;
}
Run Code Online (Sandbox Code Playgroud)
反正有没有这样做?
谢谢.
我正在寻找一种方法来使用Azure PowerShell命令为Azure应用服务(以前的Azure网站)进行部署交换.我见过的所有帖子都说使用命令
Move-Deployment -ServiceName
Run Code Online (Sandbox Code Playgroud)
但这似乎只适用于云服务以及生产和分段预定义插槽之间的交换.
我有一个我已定义的部署插槽的网站,我可以使用以下命令获取有关该网站的信息,但我不知道如何交换它:
Get-AzureWebsite -Name "sitenamehere" -Slot test
Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2010中,我有一个Web应用程序和一个控制台应用程序(实际上是一个使用NServiceBus的服务,但它在本地作为控制台应用程序运行),我想在启动Debug时启动它们.
现在我将Web应用程序设置为启动应用程序并在浏览器中打开,然后我右键单击我的服务并转到调试 - >启动新实例.这工作正常,但我宁愿不手动,因为我有时会忘记并需要运行服务来处理来自网站的消息.
谢谢.
我正在使用最新的Azure SDK Nuget软件包,该软件包现已发布3.0,并尝试在我的开发环境中本地使用Blob存储.我使用Azure存储资源管理器在我的本地开发存储中创建了一个blob,我正在尝试读取数据,但返回了400 Bad Request.当我深入研究异常返回的响应对象时,它说"其中一个HTTP头的值格式不正确".
奇怪的是,当我将完整的URL放在浏览器中时,它下载blob就好了(http://xxx.xxx:10000/devstoreaccount1/test/722b6bea-d609-48e0-a4af-3ed0f5160ad9)
这是我正在使用的代码:
var storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("UseDevelopmentStorage=true");
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("test");
var blob = container.GetBlockBlobReference("722b6bea-d609-48e0-a4af-3ed0f5160ad9");
var text = blob.DownloadText();
Run Code Online (Sandbox Code Playgroud)
我也尝试在代码中创建一个新的blob并得到相同的异常
是否可以使用服务器名称(本地)连接到ASP.NET中的SQL Server Express 2008数据库,例如"server =(local); integrated security = SSPI; database = DBNAME"?
我正在与一个项目的另一个开发人员合作,因为他正在使用SQL Server 2008和(本地)工作而不得不拥有2个不同版本的web.config而变得烦人,但我似乎无法使用SQL Server 2008 Express本地.
如果重要,数据库与.NET代码位于同一台计算机上.
谢谢.
当我在visual studio中运行它时,我能够让我的T4文件正常工作,但是在构建过程中自动执行它时会出错.
问题是,为了引用同一解决方案中的程序集而另一个项目,我添加了这一行:
<#@ assembly name="$(SolutionDir)\My.Core\bin\Debug\My.Core.dll" #>
Run Code Online (Sandbox Code Playgroud)
为了在构建时运行单个T4模板,我使用以下命令创建了一个post build-event:
"%PROGRAMFILES(x86)%\Common Files\microsoft shared\TextTemplating\10.0\TextTransform.exe" $(ProjectDir)\Features\Admin\app\Abilities.tt
Run Code Online (Sandbox Code Playgroud)
但由于此时主机不是IDE环境,因此它会抛出一个错误,因为它正在逐字地处理$(SolutionDir),因此无法找到My.Core.dll的程序集引用.
所以我的问题是,如何在T4模板中引用该程序集,以便它与我拥有的构建过程一起工作,理想情况下仍然可以右键单击并手动运行转换,但这并不重要.
我还应该注意,使用完整路径不是一个选项,因为有多个开发人员,源代码将存在于每个开发人员计算机上可能不同的目录中.
我有一个Windows Azure托管的MVC3应用程序.在Application_Start中,我调用所有需要在应用程序加载之前运行的引导程序,并且运行良好.其中一个运行的bootstrappers,点击一些Web服务API来预加载和缓存一堆数据.这个过程可能需要10-15秒,这很好,因为它在Application_Start中,并且在我自己部署和点击网站后一次点击.
该网站尚未推出,我发现一旦我部署并点击一下,一切都很好,非常快,那么如果我单独离开网站45分钟左右再回到它,有一个加载页面时长时间延迟.通过日志记录,我发现Application_Start正在被解雇,我不得不等待站点重新启动并运行我的所有bootstrappers.
我的问题是,如果不活动,Azure WebRole"进入睡眠状态"是否正常?如果是这样,我怎么能阻止这种情况发生,以便我的幸运用户访问该网站的那段时间没有太长的等待时间和糟糕的经历.
我正在使用Value Injecters使用LoopValueInjection从1种类型映射到另一种类型,并使用一些自定义逻辑覆盖SetValue(对象v)方法.我试图检测何时传入HashSet并通过HashSet并将方法应用于其中的每个项目以进行一些清理.我遇到的问题是因为参数只是一个对象,我不知道HashSet中的项目类型.例如,它可以是HashSet或HashSet.
这是我目前的代码,但我得到一个InvalidCastException.
protected override object SetValue(object v)
{
if (type.Name == "HashSet`1")
{
var genericType = type.GetGenericArguments()[0];
// this line throws the InvalidCastException
var cleanHashSet = (HashSet<object>)Activator.CreateInstance(type);
foreach (var item in (HashSet<object>)v) // I'm sure this cast will throw as well
{
cleanHashSet.Add(Clean(item));
}
return cleanHashSet;
}
return base.SetValue(v);
}
Run Code Online (Sandbox Code Playgroud)
我想主要的问题是,一旦我确定它实际上是某种HashSet,我怎么能循环通过作为对象传入的HashSet?我也在想我将需要创建一个特定类型的新空HashSet,这样我就可以将每个被清理的项目放入其中.
我有以下在版本2.6.4中工作的StructureMap注册,我最终升级到最新的SM(撰写本文时为3.1.2).并且需要更新它,因为似乎不再有IContext.BuildStack.
这是2.6.4的旧版本:
initialization.For(typeof(IRepository<,>))
.Use(context =>
{
var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();
return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], repositoryName);
}
);
Run Code Online (Sandbox Code Playgroud)
所以我认为将其更改为可行:
initialization.For(typeof (IRepository<,>))
.Use("IRepository<,>", context =>
{
var genericArgs = context.ParentType.GetGenericArguments();
return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1],
repositoryName);
}
);
Run Code Online (Sandbox Code Playgroud)
但context.ParentType为null.当我查看context.RootType时,它被设置为System.Object,这显然不是我想要的.
我获取此存储库实例的测试代码是:
var userRepository = ObjectFactory.GetInstance<IRepository<User, Guid>>();
Run Code Online (Sandbox Code Playgroud)
我没有看到任何其他财产有这些信息,但我猜我错过了什么.
我正在使用 .NET 中的 MPXJ 库来解析 MS Project (MPP) 文件,而且效果很好。我遇到的一个问题是尝试将任务开始和完成日期转换为 .NET DateTime 以与我的数据模型一起使用。
我正在完成所有任务并调用 task.getFinish() 和 task.getStart() ,它们都返回 javva.util.Date 对象。
当我使用 task.getFinish().getYear()、task.getFinish().getMonth() 等来构建新的 DateTime 对象时,它会警告我它们已过时。
将开始和结束日期从 MPXJ 获取到 .NET DateTime 对象的最佳方法是什么?
谢谢。
azure ×3
.net ×2
angularjs ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
csv ×1
encoding ×1
excel ×1
java-interop ×1
javascript ×1
mpxj ×1
msbuild ×1
nservicebus ×1
owin ×1
powershell ×1
reflection ×1
structuremap ×1
t4 ×1
utf-8 ×1