У меня есть тестовый класс NUnit, который начинается веб-службой ASP.NET (с помощью Microsoft.VisualStudio.WebHost.Server), который работает на http://localhost:1070Тестирования ASMX вебсервиса использование NUnit и передача состояния сеанса
Проблемы я имею что я хочу создать состояние сеанса в тесте NUnit, доступном веб-службе ASP.NET на localhost: 1070.
я сделал следующее, и состояние сеанса может быть успешно создан внутри теста NUnit, но теряется, когда веб-сервис вызывается:
//Create a new HttpContext for NUnit Testing based on:
//http://blogs.imeta.co.uk/jallderidge/archive/2008/10/19/456.aspx
HttpContext.Current = new HttpContext(
new HttpRequest("", "http://localhost:1070/", ""), new HttpResponse(
new System.IO.StringWriter()));
//Create a new HttpContext.Current for NUnit Testing
System.Web.SessionState.SessionStateUtility.AddHttpSessionStateToContext(
HttpContext.Current, new HttpSessionStateContainer("",
new SessionStateItemCollection(),
new HttpStaticObjectsCollection(), 20000, true,
HttpCookieMode.UseCookies, SessionStateMode.Off, false));
HttpContext.Current.Session["UserName"] = "testUserName";
testwebService.testMethod();
Я хочу, чтобы иметь возможность получить состояние сеанса, созданное в тест NUnit для сессии [ «UserName»] в веб-службы ASP.NET:
[WebMethod(EnableSession=true)]
public int testMethod()
{
string user;
if(Session["UserName"] != null)
{
user = (string)Session["UserName"];
//Do some processing of the user
//user is validated against with value stored in database
return 1;
}
else
return 0;
}
файл web.config имеет следующую конфигурацию для конфигурации состояния сеанса, и хотел бы остаться с использованием InProc, чем скорее StateServer Or SQLServer:
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>
Я предпочитаю не использовать ложные объекты, поскольку веб-службы сильно привязаны к бэкэнд базы данных, а значения состояния сеанса проверяются на то, что хранится. – herbyme