我编写了一个在标准虚拟托管Linux解决方案上运行的Java服务器应用程序.应用程序一直运行,监听套接字连接并为它们创建新的处理程序.它是客户端 - 服务器应用程序的服务器端实现.
我启动它的方法是将它包含在服务器的启动rc.local脚本中.但是一旦启动,我不知道如何访问它来阻止它,如果我想安装更新,所以我必须重新启动服务器才能重新启动应用程序.
在Windows PC上,对于这种类型的应用程序,我可能会创建一个Windows服务,然后我可以根据需要停止并启动它.Linux盒子上有类似的东西,所以如果我启动这个应用程序,我可以停止它并重新启动它而不需要完全重启服务器.
我的应用程序称为WebServer.exe.它是在服务器启动时启动的,它包含在我的rc.local中:
java -jar /var/www/vhosts/myweb.com/phpserv/WebServer.jar &
Run Code Online (Sandbox Code Playgroud)
我在Linux上有点像菜鸟,所以任何帖子都会受到赞赏.但是我确实有SSH,并且可以通过完整的FTP访问该框以安装任何更新以及访问Plesk面板.
我的一位同事写了一些代码,这些代码在进行Web服务调用以检查值的状态之前基本上暂停了1秒.此代码是在MVC 4应用程序的控制器操作中编写的.动作本身不是异步的.
var end = DateTime.Now.AddSeconds(25);
var tLocation = genHelper.GetLocation(tid);
while (!tLocation.IsFinished && DateTime.Compare(end, DateTime.Now) > 0)
{
var t = DateTime.Now.AddSeconds(1);
while (DateTime.Compare(t, DateTime.Now) > 0) continue;
// Make the webservice call so we can update the object which we are checking the status on
tLocation = genHelper.GetLocation(tid);
}
Run Code Online (Sandbox Code Playgroud)
它似乎有效,但由于某种原因,我对它的实现有一些担忧.是否有更好的方法来延迟?
注意:
我原以为这个问题是一个很好的选择,但是他并没有接受它,并说这不是他所做的工作所必需的.
如果我定义一个接口ITestInterface
然后立即创建一个实现该接口的类以便在应用程序中使用,那么可以将类和接口保持在同一名称空间中,也可以将它们分开.即Test.Interfaces
和Test.Interfaces.Implementation
.
我的接口和它的实现都将在它自己的程序集中,所以我不打算创建另一个只是为了包含接口本身.
这与c#特别相关,但我想它可以涵盖任何语言.
我已经提供了这种格式"ddMMyyHHmmss"的时间.我知道时间是UTC格式.我想使用NodaTime库将其转换为我当地的时区,但我似乎无法弄明白.我当地的时区目标是新西兰.
这是我尝试过的:
var pattern = LocalDateTimePattern.CreateWithInvariantCulture("ddMMyyHHmmss");
var parseResult = pattern.Parse(utcDateTime);
if (!parseResult.Success)
{
throw new InvalidDataException("Invalid time specified " + date + time);
}
var timeZone = DateTimeZoneProviders.Bcl["New Zealand Standard Time"];
var zone = new ZonedDateTime(
localDateTime,
timeZone,
timeZone.GetUtcOffset(SystemClock.Instance.Now));
return new DateTime(zone.ToInstant().Ticks);
Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些指出如何做到这一点的文章,即:
这些看起来效果很好,但是当我遵循这里的一些指导原则时
我好像来了一个收割机.对我来说,问题是当我将AuthorizationAttribute添加为GlobalFilter而不是仅仅装饰控制器/操作时.虽然依赖解析器似乎被调用并设置我公开的[Dependancy]属性,当它实际到达我覆盖AuthorizeAttribute的OnAuthorization()方法的代码部分时,我的public [Dependency]属性为null.
当我从全局过滤器中删除它并装饰一个控制器它似乎工作.
如果需要更多信息,我可以发布代码.
编辑:为了进一步扩展这里我的一些代码:
的global.asax.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// If I have this here the my [Dependency] attribute does not keep it's value
// If I remove it and decorate the controller the [Dependency] attribute keeps it value
filters.Add(new BasicAuthenticationAttribute());
filters.Add(new HandleErrorAttribute());
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
// injection of services and data contexts
var container = new UnityContainer();
// injections for services
RegisterUnityServices(container);
// …
Run Code Online (Sandbox Code Playgroud) 我目前有一个asp.net MVC 4应用程序,它包含Entity框架6 Code First模型,DbContext和Migrations.为了将它与我的Web应用程序分开,以便我可以在另一个项目中重用这些数据库类,我已将所有相关的Entity Framework类移动到它们自己的项目中.
但是现在当我运行解决方案时,它认为我的模型已经更改并尝试再次运行我的所有迁移.问题似乎在我的使用中SetInitializer
,好像我注释掉了这一行,我可以正常运行Web应用程序.
public static class DatabaseConfig
{
public static void Initialize()
{
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<G5DataContext, Configuration>());
// make sure the database is created before SimpleMembership is initialised
using (var db = new G5DataContext())
db.Database.Initialize(true);
}
}
Run Code Online (Sandbox Code Playgroud)
在我尝试移动所有Entity Framework类之前,这不是问题.这是不可能的,还是我做了一些根本错误的事情?
当我创建或查看问题时,我想从Mantis问题跟踪系统中删除选择配置文件及其随附字段,因为这些与我想要创建的任何问题无关.
这些包括平台,操作系统和操作系统版本字段以及配置文件部分.
无论如何我能做到吗?
在阅读了一些相当积极的评论之后,我一直在研究Assembla SVN托管解决方案.但是,我的一个要求是限制用户访问我已设置的某些存储库.原因是我们有一个承包商,我想将他们的代码检查到特定的集合存储库,但是我不想授予他们访问我已设置的其他代码存储库的权限.
我在这方面可以看到的唯一限制是将用户设置为编辑,查看或所有模式,这似乎不适合我正在寻找的内容.试图阅读Assembla常见问题解答但无法找到任何相关信息.
我们在启动包上提供1个空间和3个用户.
那么使用Assembla服务是否可行,如果没有,是否有任何免费或只是便宜的选项可以做到这一点?
谢谢.
更新:我决定对Assembla进行更深入的研究,看起来它不像大卫的建议那样提供这种细粒度控制.我在http://forum.assembla.com/forums/2-Subversion-and-Git/topics/3567-Team-permissions-to-different-repositories-in-the-same-space的支持论坛上找到了这些信息..
我想现在的问题是,是否有人知道另一个svn托管解决方案,那将提供这种用户级控制?
我通过xml接收一些数据,这些数据将被插入到关联的SQL表中.我用来插入数据的方法是在sql中查询XML并根据需要进行批量插入.
我遇到的问题是日期永远不会被识别为有效日期,所以总是会回到默认日期.
这里是提供日期的XML片段
<Upload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceID>0008E02B66DD_</DeviceID>
<DeviceType>03.20</DeviceType>
<FarmID>2</FarmID>
<UploadDate>0001-01-01T00:00:00</UploadDate>
<Sessions>
<SessionID>99</SessionID>
<RecordedDate>2012-02-03T13:00:00+13:00</RecordedDate>
<Readings />
</Sessions>
...
Run Code Online (Sandbox Code Playgroud)
这是我处理它的SQL代码片段
Select
(CASE
WHEN ISDATE(s.value('(RecordedDate)[1]', 'varchar(50)')) = 1 THEN s.value('(RecordedDate)[1]', 'varchar(50)')
ELSE @UploadDate
END) DateOfMeasurement
INTO #Session
FROM
@XMLData.nodes('/Upload') AS Upload(u)
CROSS APPLY
u.nodes('./Sessions') Sessions(s)
Run Code Online (Sandbox Code Playgroud)
我插入此数据库的字段是一个日期时间字段
题:
我想将XML中收到的日期(即2012-02-03T13:00:00 + 13:00)插入到我的SQL数据库的datetime字段中.反正有没有在SQL中很好地转换这个?
我想调用我的操作并让该操作返回直接呈现在视图上的结果局部视图,或者让操作重定向到服务器上的另一个页面.
然而,由于我通过jQuery这样做,它似乎将重定向的页面加载到我的目标div元素,而不是重新定向干净,有效地重新加载页面/网站.
jQuery调用:
$.ajax({
type: "GET",
url: "Myurl",
dataType: "html",
success: function (data) {
// replace the context of the section with the returned partial view
$('#upload_section').html(data);
}
});
Run Code Online (Sandbox Code Playgroud)
MVC动作示例
public ActionResult MyAction()
{
bool doRedirect = // some code to determine this condition
if (doRedirect)
{
return RedirectToAction("MyAction", "Home");
}
else
{
// return the partial view to be shown
return PartialView("_UploadSessionRow");
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了吗?这样做有更好的练习方法吗?在其他操作和jQuery请求中需要执行此操作,因此我正在寻找一种常见的方法来解决此问题.
更新:感谢安德鲁斯的回答我通过改变我的建议改变了我的ajax.最终的ajax是:
function loadOrRedirect(options) {
var jData = null;
try {
if (options.data) {
jData …
Run Code Online (Sandbox Code Playgroud) 我目前正在通过AWS中的Lambda函数创建一个MediaConvert作业,并使用它来转换我的媒体并创建缩略图。但是,当尝试转换没有音频的媒体时,它会失败。
为audio_selector [1]指定了无效的音轨。在输入容器中找不到音轨[1]。
如果没有音频,是否可以处理媒体?
我开发了一个使用表单身份验证和cookie的MVC4 Web应用程序.在所有浏览器中,自从我开始(几年)以来它一直运行良好.
我现在尝试从微软虚拟盒中使用IE11测试此站点,并且登录过程不起作用.当我点击登录时没有任何反应,我被重定向回登录页面,好像我没有经过身份验证.
起初我以为是因为cookie已经过期但是cookie被设置为我可以在临时文件中看到它.我的代码似乎没有做任何棘手的事情.
注意:当我将站点添加到兼容性视图时,登录过程有效
这是登录/ Cookie代码
public void SignIn(HttpResponseBase response, string userName, bool rememberMe)
{
if (String.IsNullOrWhiteSpace(userName))
throw new ArgumentException("Value cannot be null or empty.", "userName");
var ticket = new FormsAuthenticationTicket(
1,
userName,
DateTime.Now,
DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
rememberMe,
string.Empty);
var cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket));
cookie.HttpOnly = true;
if (rememberMe)
{
cookie.Expires = ticket.Expiration;
}
response.Cookies.Add(cookie);
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个自定义AuthorizeAttribute,它应该委托链,因为我没有通过ajax登录.
public class OverseerAuthorizeAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext context)
{
if (FormsAuthentication.IsEnabled)
{
if (context.HttpContext.Request.IsAjaxRequest())
{
context.HttpContext.Response.AddHeader("REQUIRES_AUTH", "1");
context.Result = …
Run Code Online (Sandbox Code Playgroud)