Модульное тестирование веб-приложения MVC в Visual Studio и проблемы с QTAgent - PullRequest
2 голосов
/ 14 сентября 2011

Я пытался запустить модульный тест в Visual Studio для приложения MVC и постоянно получал следующую ошибку:

Указанный URL-адрес ('http://localhost:21496/') не соответствует действительному каталогуТесты, настроенные для работы в ASP.NET в IIS, требуют, чтобы для URL существовал действительный каталог. URL может быть недействительным или может не указывать на действительное веб-приложение.

Единственный совет -чтобы убедиться, что у вас есть локальный адрес в атрибуте UrlToTest, вот так:

    [TestMethod()]
    [HostType("ASP.NET")]
    [UrlToTest("http://localhost:21496/")]

Однако это все равно не работает с IIS Express или IIS 7 в Windows 7 и при удалениив журналах событий обнаружена следующая проблема.

(QTAgent32.exe, PID 6976, Thread 15) WebSites.GetWebServer: failed to create AspNetHelper: Microsoft.VisualStudio.Enterprise.Common.AspNetHelperException: The website metabase contains unexpected information or you do not have permission to access the metabase.  You must be a member of the Administrators group on the local computer to access the IIS metabase. Therefore, you cannot create or open a local IIS Web site.  If you have Read, Write, and Modify Permissions for the folder where the files are located, you can create a file system web site that points to the folder in order to proceed. ---> System.Runtime.InteropServices.COMException: Unknown error (0x80005000)
   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_IsContainer()
   at System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)
   at Microsoft.VisualStudio.Enterprise.Common.IISHelper.GetWebServerOrdinal(Uri site)
   --- End of inner exception stack trace ---
   at Microsoft.VisualStudio.Enterprise.Common.IISHelper.GetWebServerOrdinal(Uri site)
   at Microsoft.VisualStudio.Enterprise.Common.IISHelper.get_WebServerOrdinal()
   at Microsoft.VisualStudio.Enterprise.Common.IISHelper.get_RootPath()
   at Microsoft.VisualStudio.Enterprise.Common.IISHelper.get_PhysicalPath()
   at Microsoft.VisualStudio.Enterprise.Common.AspNetHelperMan..ctor(Uri uri, BasicAuthCredential credential, Int32 frameworkMajorVersion)
   at Microsoft.VisualStudio.TestTools.HostAdapters.WebSites.GetWebServer(String webServerName, WebServerType webServerType, String urlToTest, String pathToWeb, String webAppRoot, BasicAuthCredential credential, Context context, WebSiteConfigurationType webSiteConfigType, Origin origin)

Следующий шаг, который я предпринял, состоял в том, чтобы убедиться, что QTAgent32 всегда работает с правами администратора, наряду с Visual Studio.

Сейчас я нахожусьв растерянности и не может придумать что-либо еще, чтобы попытаться, так что надеюсь, что кто-то, по крайней мере, может указать мне в каком-то направлении.

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Тесты были созданы в среде ASP.NET по умолчанию.Чтобы протестировать контроллеры, но без необходимости запуска веб-приложения, необходимо удалить следующие атрибуты перед методами тестирования.

[HostType("ASP.NET")]
[UrlToTest("http://localhost:21496/")]
1 голос
/ 06 мая 2012

Я столкнулся с той же проблемой сегодня (также в этой теме ). У меня были те же ошибки в моем журнале событий:

(QTAgent32.exe, PID 12348, Thread 61) WebSites.GetWebServer: failed to create AspNetHelper: Microsoft.VisualStudio.Enterprise.Common.AspNetHelperException: The website metabase contains unexpected information or you do not have permission to access the metabase.  You must be a member of the Administrators group on the local computer to access the IIS metabase. Therefore, you cannot create or open a local IIS Web site.  If you have Read, Write, and Modify Permissions for the folder where the files are located, you can create a file system web site that points to the folder in order to proceed. ---> System.Runtime.InteropServices.COMException: Unknown error (0x80005000)

Это привело меня к этому сообщению в блоге , которое, похоже, решило проблему.

Мне просто нужно было перейти к разделу «Включение или отключение функций Windows» и добавить IIS 6 Management Compatibility и все четыре подкомпонента. Я использую Windows 7 Home Premium, у которой нет опции аутентификации Windows, но это не проблема. Попробуйте и посмотрите, решит ли это проблему для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...