我们的应用程序旨在处理来自不同地理位置的用户.
我们无法检测当前最终用户当地时间和时区对其进行操作的情况.他们选择不同的文化,如sv-se,en-us,ta-In甚至他们从欧洲/伦敦时区访问..
我们在美国托管服务器托管它,应用程序用户来自 Norway/Denmark/Sweden/UK/USA/India
问题是我们用来DateTime.Now存储记录创建/更新日期等.
由于服务器在美国运行,所有用户数据都保存为美国时间:(
在SO中进行研究后,我们决定将所有历史日期存储在DB中 DateTime.UtcNow
问题:

创建了一条记录29 Dec 2013, 3:15 P.M Swedish time.
public ActionResult Save(BookingViewModel model)
{
Booking booking = new Booking();
booking.BookingDateTime = model.BookingDateTime; //10 Jan 2014 2:00 P.M
booking.Name = model.Name;
booking.CurrentUserId = (User)Session["currentUser"].UserId;
//USA Server runs in Pacific Time Zone, UTC-08:00
booking.CreatedDateTime = DateTime.UtcNow; //29 Dec 2013, 6:15 A.M
BookingRepository.Save(booking);
return View("Index");
}
Run Code Online (Sandbox Code Playgroud)
我们希望向在India/Sweden/USA登录的用户显示相同的历史记录时间.
截至目前,我们正在使用当前文化用户登录并从配置文件中选择时区并使用TimeZoneInfo类进行转换
<appSettings>
<add key="sv-se" value="W. Europe Standard Time" />
<add key="ta-IN" value="India Standard …Run Code Online (Sandbox Code Playgroud) 我的消费计划有一个简单的python Azure 函数。
它在本地运行得很好。代码如下。
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
Run Code Online (Sandbox Code Playgroud)
当部署到服务器时,所有代码和必要的包也得到部署。
然而,http …
[HttpPost]
[Route("TnC")]
public IHttpActionResult TnC(CustomViewModel myViewModel)
{
try
{
return Json(_Internal.TnC(myViewModel, LoggedInUser));
}
catch (BusinessException exception)
{
return Json(BuildErrorModelBase(exception));
}
}
Run Code Online (Sandbox Code Playgroud)
如果_Internal服务具有99.99%的正常运行时间且未定义正式的故障合同接口.
在我的应用程序级别(业务层级别)中作为BusinessException- 根类处理的异常
其中BusinessException的定义如下
public class BusinessException : Exception
{
BusinessException()...
BusinessExceptionFoo()...
BusinessExceptionBar()...
//...
}
Run Code Online (Sandbox Code Playgroud)
而目前的测试方法是
要做的事:添加异常测试
[TestMethod]
[ExpectedException(typeof(BusinessException),
"Not a valid Business Case")]
public void TnCTest()
{
var bookingService = myContainer.Resolve<mySvc>();
var controller = new LinkBookingController(mySvc, myContainer);
var expectedResult = controller.TnC(new myViewModel
{
...params
});
var actualResult = GetData<Result<myViewModel>>(expectedResult);
Assert.AreEqual(expectedResult, actualResult);
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FormView并希望验证服务器端的一些数据.我正在尝试使用该属性,EnableModelValidation但MSDN对此非常不完整.
我看到了一个aproach(但关于动态数据,而不仅仅是ObjectDataSource),你抛出一个ValidationException它,如果你有一个它将处理ValidationSummary.不幸的是,它与黄色错误页面崩溃而不是显示摘要.
以下是我的课程:
namespace FormViewTest
{
[DataObject]
public class Person
{
private int age;
[DataObjectField(false)]
public int Age
{
get { return age; }
set
{
if (value < 0)
{
throw new ValidationException("Invalid age");
}
age = value;
}
}
public void Insert(Person p)
{ }
public Person Get()
{
return new Person();
}
}
}
Run Code Online (Sandbox Code Playgroud)
和aspx:
<asp:FormView runat="server"
DataSourceID="ObjectDataSource1"
DefaultMode="Insert"
EnableModelValidation="true">
<InsertItemTemplate>
Age:
<asp:TextBox …Run Code Online (Sandbox Code Playgroud) 从C# - windows窗体应用程序中的不同线程访问GUI工作线程中创建的按钮
我是SQL Case Statement的新手.当我使用case语句的'between'子句时,它给出了一个错误.查询如下
SELECT CASE
WHEN @Divid=1 THEN CONVERT(varchar(20),datename(mm,m.dob)) + ' ' + CONVERT(varchar(20),datename(DAY ,m.dob))
ELSE CONVERT(varchar(20),datename(mm,m.ActualDOB)) + ' ' + CONVERT(varchar(20),datename(DAY ,m.ActualDOB))
END 'DOB' ,
m.FirstName + ISNULL(m.LastName,'') 'Name',
m.EmployeeNo ,
m.Customer
FROM sEmployeeMaster m
JOIN lDivision d ON m.BizVertical=d.Division
WHERE d.DivisionID= @Divid
AND CASE
WHEN @Divid=1 THEN MONTH(dob) BETWEEN MONTH(getdate()) AND MONTH(getdate()+2)
AND DAY(dob)BETWEEN DAY(getdate()) AND DAY(getdate()+2)
ELSE MONTH(ISNULL(m.ActualDOB,dob) BETWEEN MONTH(getdate()) AND MONTH(getdate()+2)
AND DAY(m.ActualDOB,
dob)BETWEEN DAY(getdate()) AND DAY(getdate()+2)
END
Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net ×2
asp.net-mvc ×1
case ×1
datetime ×1
formview ×1
mstest ×1
nodatime ×1
python ×1
sql ×1
sql-server ×1
timezone ×1
unit-testing ×1
winforms ×1